我将 html 元素上的 lang 属性设置为“en”。当我在 chrome 的样式检查器中查看时,我在 html 元素上看到了以下 css。请注意,这是浏览器添加的默认样式。
html[Attributes Style] {
-webkit-locale: "en";
}
Run Code Online (Sandbox Code Playgroud)
当我在 Firefox 中查看它时,html 元素没有这些样式。
规范中有这个吗?
这是做什么的?
你能在css中设置这个值吗?
你应该设置这个值吗?
这适用于哪些元素?
长话短说
\n“font-language-override CSS 属性控制字体中特定于语言的字形的使用。” [1]类似地-webkit-locale做同样的事情,但对于基于 webkit/chromium 的浏览器[2]。
Unicode 不是字符到字形的 1:1 映射 - 它是 unicode 字符数和当前语言环境的函数[3]。您可能有兴趣查看 CJK Unified Ideographs 的示例[4][5]。
\n基本上,这些 CSS 属性允许您覆盖或创建文档(或其他元素)属性的后备lang。它告诉浏览器根据语言/区域设置值呈现字体中的哪个字形。
-webkit-locale似乎使用与Accept-LanguageHTTP 标头相同的语言范围[6][7][8]。
相反,font-language-override需要三个或四个字符的区分大小写的 OpenType 语言系统标记。[1][9][10]
问题解答:
\n\n\n当我在 Firefox 中查看它时,html 元素没有这些样式。
\n
Firefox 不支持-webkit-locale,但它支持font-language-override[1],本质上做同样的事情[2]。
\n\n规范中有这个吗?
\n
-webkit-locale是非标准[11][12],仅在基于 webkit/chromium 的浏览器中受支持,而是font-language-override标准[1][9],但目前仅受 Firefox 支持。然而,在两者之间,您基本上拥有完整的常青浏览器支持。
\n\n这是做什么的?
\n
这是一个例子:
\n.traditional {\n -webkit-locale: \'zh-Hant\';\n font-language-override: \'ZHT\';\n}\n\n.simplified {\n -webkit-locale: \'zh-Hans\';\n font-language-override: \'ZHS\';\n}\n\n.traditional-hong-kong {\n -webkit-locale: \'zh-Hant-HK\';\n font-language-override: \'ZHH\';\n}\n\n.traditional-macao {\n -webkit-locale: \'zh-Hant-MO\';\n font-language-override: \'ZHTM\';\n}\n\n\n/* simple table styles */\n\ntable {\n border-collapse: collapse;\n}\n\nth {\n background: #cccccc;\n}\n\nth,\ntd {\n border: 1px solid #ccc;\n padding: 8px;\n text-align: center;\n}\n\ntr:nth-child(even) {\n background: #efefef;\n}\n\ntr:hover {\n background: #d1d1d1;\n}\n\ntd:first-of-type {\n font-size: 100px;\n}Run Code Online (Sandbox Code Playgroud)\r\n<html lang="zh">\n\n<head>\n <title>-webkit-locale Example</title>\n</head>\n\n<body>\n <h3>This is the same Chinese character (\xe9\x81\xb8) but different glyphs are rendered based on the -webkit-locale/font-language-override.</h3>\n <table>\n <thead>\n <tr>\n <th>Glyph</th>\n <th>-webkit-locale <br> font-language-override</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>\xe9\x81\xb8</td>\n <td>None</td>\n <td>default, lang="zh"</td>\n </tr>\n <tr>\n <td class="simplified">\xe9\x81\xb8</td>\n <td>zh-Hans <br> ZHS</td>\n <td>simplified Chinese</td>\n </tr>\n <tr>\n <td class="traditional">\xe9\x81\xb8</td>\n <td>zh-Hant <br> ZHT</td>\n <td>traditional Chinese</td>\n </tr>\n <tr>\n <td class="traditional-hong-kong">\xe9\x81\xb8</td>\n <td>zh-Hant-HK <br> ZHH</td>\n <td>Hong Kong traditional Chinese</td>\n </tr>\n <tr>\n <td class="traditional-macao">\xe9\x81\xb8</td>\n <td>zh-Hans-MO <br> ZHTM</td>\n <td>Macao traditional Chinese</td>\n </tr>\n </tbody>\n </table>\n</body>\n\n</html>Run Code Online (Sandbox Code Playgroud)\r\nChrome 120 - MacOS - - 上的结果lang="en"使用-webkit-locale:
\n\xc2\xa0\n
FireFox 121 - MacOS - * - 上的结果lang="zh"使用font-language-override:
\n* 请注意,当使用 font-language-override 时,除非 lang 属性为 ,否则本示例中的各种字形将无法正确应用zh。
\xc2\xa0\n
\n\n你能在css中设置这个值吗?
\n
是的,这就是它的目的。
\n/** \n * Render Chinese traditional characters\n * instead of the in-many-cases-defaulted-to\n * Chinese simplified characters.\n */\n[lang=\'zh\'] {\n -webkit-locale: \'zh-Hant\';\n font-language-override: \'ZHT\';\n}\nRun Code Online (Sandbox Code Playgroud)\n \n\n你应该设置这个值吗?
\n
除非你真的需要,否则不会。最好将lang标签设置为您想要的字符集(例如,lang="zh-Hant")。
\n\n这适用于哪些元素?
\n
“适用于所有元素和文本。它也适用于 ::first-letter 和 ::first-line。” [13]
\n[1] - 字体语言覆盖 MDN:https://developer.mozilla.org/en-US/docs/Web/CSS/font-language-override
\n[2]:经过广泛的搜索,我找不到关于其含义的官方定义或文档-webkit-locale;然而,这个答案和例子应该足够了。
[3] - Chromium 实现文档:https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/fonts/LocaleInFonts.md#unified-han-ideographs
\n[4] - 什么是中日韩统一表意文字?:https://en.wikipedia.org/wiki/CJK_Unified_Ideographs
\n[5] - 中日韩统一表意文字 Unicode 标准:https ://unicode.org/charts/PDF/U4E00.pdf
\n[6] - Accept-Language MDN:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
\n[7] - 语言范围:https://www.rfc-editor.org/rfc/rfc4647#section-2.1
\n[8] - 接受语言列表:https ://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
\n[9] - CSS 字体模块级别 4:https://drafts.csswg.org/css-fonts/#font-language-override-prop
\n[10] - OpenType 语言系统列表: https: //learn.microsoft.com/en-us/typography/opentype/spec/languagetags
\n[11]:非标准 MDN:https://developer.mozilla.org/en-US/docs/Web/CSS/WebKit_Extensions#l
\n[12] - 提到这是非标准的:https://github.com/chromium/chromium/commit/74c5b3d45c81fcc9c5cd86213c8c265335e6e1a6
\n[13] - 正式定义 MDN:https://developer.mozilla.org/en-US/docs/Web/CSS/font-language-override#formal_definition
\n