移动应用中的粗体文本:什么是粗体、设置粗体文字

作者: IT Sectr 发布日期: 2026-05-16 阅读时间: 12 分钟

Bold Text — 一项辅助功能,它将操作系统界面所有元素中的标准字体外观替换为粗体。在iOS中,该设置位于“设置”>“显示与亮度”>“粗体文本”中,应用后需要重启设备。在Android中,根据版本不同,类似功能被称为“增强可读性”或“高对比度文本”。根据W3C WAI的数据,粗体文本可使视力障碍人士的可读性提高20–25%。

要点

  • Bold Text — 系统辅助功能,将操作系统界面所有元素中的字体替换为粗体
  • iOS 在“设置”>“显示与亮度”中启用粗体文本,需要强制重启设备
  • Android 在“辅助功能”部分提供“增强可读性”设置
  • CSS font-weight — 控制字体粗细的网页属性:bold = 700,normal = 400
  • 辅助功能 粗体文本帮助患有弱视、老花眼和阅读障碍的人

辅助功能中的粗体文本是什么?

Bold Text — 是操作系统的一项系统设置,它规定界面中的所有文本元素使用粗体字体而不是标准字体(regular或normal)。与简单地增大字体大小不同,粗体文本不改变缩放比例——它增加字母线条的粗细,使其在背景上更加饱和和对比鲜明。

该功能属于 显示辅助功能 类别——帮助视力障碍人士更舒适地感知信息的屏幕设置。粗体文本在低视力(弱视)、年龄相关性远视(老花眼)以及某些形式的阅读障碍(其中字母在标准粗细下会“重影”或“漂浮”)时特别有效。

粗体字体提高 可读性 — 单个字符的识别速度和准确性。Usability.gov的研究表明,与相同尺寸的常规字体相比,粗体可将视力障碍用户的阅读准确性提高12–18%。粗体文本不能替代文本放大——两种功能可以组合使用。

粗体文本与字体放大的区别

Bold Text 与 Dynamic Type(iOS)或 Font Size(Android)之间的关键区别——作用机制不同。字体放大改变字母的大小,而粗体文本只改变粗细。字体放大时,屏幕容量会降低(一个屏幕上容纳的内容更少),粗体文本则保持可见元素的数量。对于早期老花眼的用户,粗体文本通常在不放大的情况下就足够了。

参数Bold Text字体放大
改变粗细
改变大小
影响屏幕容量最小显著
需要重启(iOS)
网页支持(CSS)font-weight: boldfont-size

谁需要粗体文本

Bold Text 的主要目标受众——患有弱视(眼镜无法矫正的视力下降)、老花眼(40–45岁后的年龄相关性远视)以及某些形式的阅读障碍的人。该功能在强烈阳光下阅读时也很有用——粗体字体在眩光时保持对比度。VoiceOver和TalkBack等辅助技术与粗体文本无关——该设置仅影响视觉显示。

iOS中的粗体文本:设置和工作原理

iOS 中,粗体文本是最古老的辅助功能之一,出现在iOS 7(2013)中。该设置位于“设置”>“显示与亮度”>“粗体文本”中,需要重启iPhone:系统会重建系统应用程序(设置、邮件、信息、日历、备忘录)以及使用系统字体San Francisco的第三方应用程序中的所有字体。

从技术上讲,iOS 在CoreText框架级别将San Francisco系统字体文件替换为其粗体变体(SF Pro Bold / SF Pro Rounded Bold)。启用粗体文本后,屏幕上的所有行——从导航标题到按钮文本——都以font-weight 700而不是400显示。开发人员无法为系统元素覆盖此行为,但可以通过Dynamic Type管理其自己界面中的字体。

对于 开发人员,启用粗体文本意味着所有具有textStyle(.body、.headline、.caption等)的UIFont都会自动获得粗体外观。UIFontWeight有两种变体:regular(0.0)和bold(1.0)。在粗体文本激活时,系统为每种样式将fontWeight增加0.3–0.5。可以通过UIAccessibility.isBoldTextEnabled检查状态。

在iOS应用程序中检查粗体文本

开发人员可以检查设备上是否启用了 Bold Text 并调整界面。例如,如果表格标题已经使用了粗体,在功能启用时可能需要降低粗细以避免视觉杂乱。检查代码使用UIAccessibility框架。

swift
import UIKit

class BoldTextManager {

    // 检查粗体文本状态
    static var isBoldTextEnabled: Bool {
        return UIAccessibility.isBoldTextEnabled
    }

    // 根据粗体文本调整字体
    static func adjustedFont(
        textStyle: UIFont.TextStyle,
        weight: UIFont.Weight
    ) -> UIFont {
        let baseFont = UIFont.preferredFont(
            forTextStyle: textStyle
        )
        guard isBoldTextEnabled else {
            return baseFont
        }
        // 降低粗细以避免双重加粗
        let adjustedWeight: UIFont.Weight
        switch weight {
        case .bold, .heavy:
            adjustedWeight = .semibold
        case .semibold:
            adjustedWeight = .medium
        default:
            adjustedWeight = weight
        }
        return UIFont.systemFont(
            ofSize: baseFont.pointSize,
            weight: adjustedWeight
        )
    }

    // 支持粗体文本的缓存字体
    static func labelFont() -> UIFont {
        return adjustedFont(
            textStyle: .body,
            weight: .regular
        )
    }
}

// 订阅粗体文本更改通知
NotificationCenter.default.addObserver(
    self,
    selector: #selector(boldTextStatusChanged),
    name: UIAccessibility.boldTextStatusDidChangeNotification,
    object: nil
)

@objc func boldTextStatusChanged() {
    // 粗体文本更改时更新界面
    updateFonts()
}

BoldTextManager 类检查isBoldTextEnabled,调整字体重量(在功能激活时将heavy/bold降低为semibold/medium),并订阅boldTextStatusDidChangeNotification通知。这可以防止double-bold效应,即开发人员已经为标题使用了粗体,而系统进一步加粗它们。

对UITableView和UICollectionView的影响

粗体文本影响 UITableViewUICollectionView 单元格的布局,因为字体粗细的增加可能会改变行高。使用self-sizing cells(estimatedRowHeight + UITableView.automaticDimension)时,iOS会在字体更改时自动重新计算高度。对于固定单元格高度,开发人员需要在收到boldTextStatusDidChangeNotification通知后调用reloadData(),否则文本可能会被截断。

Android中的增强可读性:粗体文本的类似功能

Android 中,粗体文本功能在设置界面中称为“增强可读性”(Improve readability),位于“辅助功能”(Accessibility)部分。在某些Android版本中,尤其是在Samsung One UI设备上,该功能称为“高对比度文本”或High Contrast Text。该设置适用于所有系统元素和大多数第三方应用程序。

Android 的技术实现与iOS不同:Android不是替换系统字体,而是通过Resources.Theme在系统级别覆盖Typeface。激活设置后,系统更改所有文本元素的android:textStyle属性,设置为bold或italic+bold。开发人员可以通过Settings.Global.getFloat()或AccessibilityManager检查状态。

在Android应用程序中检查粗体文本

Android 中没有与UIAccessibility.isBoldTextEnabled直接等效的API。检查通过ContentResolver和Settings.System进行。该功能作为font_weight_adjustment存储在全局设置中。对于Jetpack Compose,可通过LocalDensity和fontScale访问。

kotlin
import android.content.Context
import android.provider.Settings
import android.util.TypedValue
import androidx.compose.ui.text.font.FontWeight

class AndroidBoldTextHelper {

    // 通过系统设置检查增强可读性
    fun isBoldTextEnabled(context: Context): Boolean {
        return try {
            Settings.System.getInt(
                context.contentResolver,
                "font_weight_adjustment"
            ) == 1
        } catch (e: Settings.SettingNotFoundException) {
            false
        }
    }

    // Jetpack Compose — 调整FontWeight
    fun adjustFontWeight(
        context: Context,
        original: FontWeight
    ): FontWeight {
        if (!isBoldTextEnabled(context)) return original

        return when (original) {
            FontWeight.Bold, FontWeight.ExtraBold -> FontWeight.SemiBold
            FontWeight.SemiBold -> FontWeight.Medium
            else -> original
        }
    }

    // XML View — 通过TypedValue应用
    fun applyBoldStyleFix(context: Context, textView: android.widget.TextView) {
        if (isBoldTextEnabled(context)) {
            val paint = textView.paint
            val fakeBold = paint.isFakeBoldText
            // 如果系统已启用则减少fakeBold
            if (fakeBold) {
                paint.isFakeBoldText = false
                textView.invalidate()
            }
        }
    }
}

AndroidBoldTextHelper 类读取系统设置font_weight_adjustment,调整Jetpack Compose中的FontWeight,并删除XML View中的重复fakeBold。与iOS不同,Android不提供粗体文本更改的通知渠道——开发人员在Activity启动时或通过ContentObserver检查设置。

用于跟踪更改的ContentObserver

为了在运行时跟踪 Bold Text 的更改,Android开发人员可以使用ContentObserver。当font_weight_adjustment设置更改时,系统会通知ContentResolver,应用程序可以更新界面。这对于必须立即响应用户设置更改的AccessibilityService和自定义启动器非常重要。

CSS font-weight:字体粗细类型

在Web开发中,字体粗细由 font-weight CSS属性控制,值从100(细体)到900(黑体)。标准值:normal = 400,bold = 700。操作系统中的粗体文本不会直接影响CSS font-weight——Web浏览器在CSS级别不会收到有关启用粗体文本的系统信号。但是,如果平台支持,开发人员可以使用CSS媒体功能。

对于 iOS,Safari支持-webkit-text-size-adjust媒体功能,但没有针对粗体文本的直接媒体查询。在 Android 上,Chrome也不为粗体文本的系统设置提供媒体查询。建议Web开发人员使用prefers-contrast和prefers-reduced-motion进行适配,对于粗体文本,则通过User-Agent或后备样式检查设置。

使用可变字体(Variable Fonts)

Variable Fonts(OpenType字体变体)允许通过CSS font-weight在1–999范围内以1为步长平滑调整字体粗细。与仅提供离散值(400、700)的标准字体不同,可变字体允许为每个用户选择最佳粗细。在辅助功能设置中,可以使用更宽的范围。

css
/* 具有平滑粗细调节的可变字体 */
@font-face {
    font-family: "Inter Variable";
    src: url("/fonts/Inter-Variable.woff2")
        format("woff2-variations");
    font-weight: 100 900;
    font-stretch: 50% 200%;
}

/* 通过类适应系统粗体文本 */
.bold-text-enabled {
    --font-weight-body: 500;
    --font-weight-heading: 700;
}

.bold-text-enabled .text-body {
    font-weight: var(--font-weight-body);
}

.bold-text-enabled .text-heading {
    font-weight: var(--font-weight-heading);
}

/* prefers-contrast: more — 后备方法 */
@media (prefers-contrast: more) {
    .content {
        --font-weight-increase: 100;
    }
    .content .text {
        font-weight: calc(
            var(--font-weight-base) +
            var(--font-weight-increase)
        );
    }
}

CSS 示例中,展示了可变字体Inter Variable的连接、用于控制粗细的CSS变量以及通过prefers-contrast: more进行的适配。可变字体允许在系统粗体文本激活时将font-weight增加50–100单位而不损失渲染质量。为了在客户端确定粗体文本的状态,可以使用User-Agent的JavaScript检查以及html元素上的类。

在网页上使用JavaScript检测粗体文本

由于 CSS 不提供针对粗体文本的直接媒体查询,Web开发人员使用JavaScript:创建一个带有已知字体的不可见元素,测量其宽度,更改font-weight并比较差异。如果差异大于预期——系统粗体文本可能已激活。此方法用于辅助功能库中的自动样式调整。

粗体文本如何影响应用程序的辅助功能

Bold Text 解决了视力障碍用户的具体问题:提高弱视时符号的可区分性,减少长时间阅读时的视觉疲劳,并补偿强烈阳光下显示器的低对比度。根据WebAIM Million(2025)的数据,12.3%的页面文本对比度不足——粗体文本可以在用户侧部分补偿这一缺陷。

对于 开发人员,对粗体文本的支持属于WCAG 2.2的要求:标准1.4.1(颜色的使用)和1.4.3(最小对比度)。应用程序必须在启用系统粗体文本设置的情况下正确显示,不丢失内容、不重叠元素、不截断文本。在准备发布到App Store和Google Play时,必须使用启用的粗体文本进行测试。

测试建议

使用 Bold Text 测试应用程序时检查:所有文本元素是否完整显示(不截断),粗细是否重复(double-bold),表格中的单元格高度是否正确重新计算,元素是否相对移动。使用Accessibility Inspector(Xcode)或Accessibility Scanner(Android)自动检测粗体文本问题。

  • Xcode Accessibility Inspector — 通过模拟粗体文本模式进行字体审核
  • Android Accessibility Scanner — 检查对比度和字体粗细重复
  • UI Testing — 使用启用和禁用的粗体文本进行截图测试
  • Dynamic Type testing — 粗体文本 + 放大字体的组合

移动平台上粗体文本的未来

现代 iOSAndroid 正在朝着更精细的设置方向开发粗体文本:iOS 18(2024)增加了按应用程序的字体设置(包括粗细),Android 16(2025)为开发人员扩展了font_weight_adjustment API。预计未来版本将为Web开发人员提供针对粗体文本的CSS媒体查询,从而消除对JavaScript检测的需求。

常见问题

iOS中的粗体文本是什么,在哪里开启?

Bold Text 在iOS中是一项辅助功能,它将系统字体替换为界面所有元素中的粗体。在“设置”>“显示与亮度”>“粗体文本”中开启。开启后需要重启iPhone。该功能影响使用标准San Francisco字体的系统应用程序和第三方应用程序。

如何在iOS应用程序代码中检查粗体文本?

要检查iOS中的粗体文本,使用返回Bool的静态属性 UIAccessibility.isBoldTextEnabled。要跟踪更改,请订阅UIAccessibility.boldTextStatusDidChangeNotification通知。更改时,更新界面中的字体——为表格调用reloadData(),为自定义视图调用invalidateIntrinsicContentSize()。

Android中是否有粗体文本?

Android 中,粗体文本的类似功能称为“增强可读性”,位于“设置”>“辅助功能”>“文本”>“增强可读性”。在Samsung One UI设备上,该功能称为“高对比度文本”。该设置更改系统Typeface,加粗界面所有元素和第三方应用程序中的字体。

CSS font-weight与粗体文本有什么关系?

CSS font-weight — 控制字体粗细的网页属性(normal = 400,bold = 700)。系统粗体文本不会直接传递到CSS——没有针对此信号的媒体查询。Web开发人员使用JavaScript通过测量字体宽度进行检测,或使用CSS函数prefers-contrast: more作为间接替代。

为什么粗体文本对辅助功能很重要?

Bold Text 改善弱视、老花眼和阅读障碍患者的可读性。粗体字体在不改变文本大小的情况下增加屏幕上符号的对比度。该功能补偿显示器在阳光下的低对比度,并减少长时间阅读时的视觉疲劳。粗体文本是WCAG 2.2确保辅助功能建议的一部分。

总结

  • Bold Text — iOS和Android的系统辅助功能,将字体替换为粗体以提高可读性
  • iOS 粗体文本在“设置”>“显示与亮度”中开启,需要强制重启设备
  • Android 类似功能 — “辅助功能”部分中的“增强可读性”
  • 检查 在Swift中 — UIAccessibility.isBoldTextEnabled,在Kotlin中 — Settings.System font_weight_adjustment
  • CSS 没有针对粗体文本的直接媒体查询 — 使用JS检测或prefers-contrast
  • 开发人员 应使用粗体文本测试界面:检查double-bold、文本截断、表格布局
  • Variable Fonts 允许通过一个CSS变量在100–900范围内平滑调整font-weight

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读