相当于字体粗细吗?

相当于字体粗细吗?

font-weight: 541;当字体使用“可变字体”标准时,lualatex(通过 fontspec)相当于什么 css ,它允许我们以连续的方式连续选择字体粗细(粗体/半粗体……)?

另外,如何检查字体是否支持可变字体,以及我可以调整哪些参数?例如,Robotto flex 字体(下载) 在本页列出,提供许多可调功能,如,,wght… ,如在wdthopszhttps://v-fonts.com/

我找到了如何启用布尔字体功能(相等的css 的font-feature-settings),其中低级特性(用 列出otfinfo -f yourfile.ttf)映射到表 4 中的高级选项https://mirror.lyrahosting.com/CTAN/macros/unicodetex/latex/fontspec/fontspec.pdf,但我找不到如何列出/启用可变字体选项……

平均能量损失

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{fontspec}

\begin{document}

\NewDocumentCommand{\myText}{O{}O{}}{\makebox[4.5cm][l]{#1:} {#2{Here is a test of me changing fonts}}}

\myText[Default]

%% In optional argument, we can enable font features (the one that you can see when typing otfinfo -f yourfile.ttf), where
%% fontspec translates 4 letter features like "kern" into a more user-friendly interface. The map between low-level and high-level is given
%% in table 4 page 38 of https://mirror.lyrahosting.com/CTAN/macros/unicodetex/latex/fontspec/fontspec.pdf

\fontspec[]{Times New Roman} \myText[Times New Roman]

\fontspec[]{Times New Roman} \myText[Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=3]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=5]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

%% Download here https://github.com/googlefonts/roboto-flex/blob/main/fonts/RobotoFlex%5BGRAD%2CXOPQ%2CXTRA%2CYOPQ%2CYTAS%2CYTDE%2CYTFI%2CYTLC%2CYTUC%2Copsz%2Cslnt%2Cwdth%2Cwght%5D.ttf
\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[RobotoFlex]
\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Bold RobotoFlex][\textbf]

%% How to enable weight/width/opsz/… as we can in https://v-fonts.com/ for this font? 

\end{document}

%%% Local Variables: 
%%% mode: latex 
%%% TeX-engine: luatex
%%% TeX-master: t 
%%% End:

编辑

正如评论中所建议的,我尝试使用RawFeature={+axis={wght=900}}并且它似乎有效,除了一些有缺陷的字母,例如重量 100 上的 i 或重量 900 上的 o:

https://imgur.com/682ULtS

(抱歉,我无法在此处发布任何图片,因为图片好像坏了)

我尝试使用其他 PDF 查看器(okular、firefox 和 chromium:它们都打印相同的错误输出)。此外,您知道如何列出所有可用轴及其默认值吗?

平均能量损失

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{fontspec}

\begin{document}

\NewDocumentCommand{\myText}{O{}O{}}{\makebox[4.5cm][l]{#1:} {#2{Here is a test of me changing fonts}}}

\myText[Default]

%% In optional argument, we can enable font features (the one that you can see when typing otfinfo -f yourfile.ttf), where
%% fontspec translates 4 letter features like "kern" into a more user-friendly interface. The map between low-level and high-level is given
%% in table 4 page 38 of https://mirror.lyrahosting.com/CTAN/macros/unicodetex/latex/fontspec/fontspec.pdf
\fontspec[]{Times New Roman} \myText[Times New Roman]

\fontspec[]{Times New Roman} \myText[Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=3]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=5]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

%% Download here https://github.com/googlefonts/roboto-flex/blob/main/fonts/RobotoFlex%5BGRAD%2CXOPQ%2CXTRA%2CYOPQ%2CYTAS%2CYTDE%2CYTFI%2CYTLC%2CYTUC%2Copsz%2Cslnt%2Cwdth%2Cwght%5D.ttf
\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[RobotoFlex]

\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Bold RobotoFlex][\textbf]

\fontspec[RawFeature={+axis={wght=100}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Bold RobotoFlex][\textbf]

\fontspec[RawFeature={+axis={wght=900}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Bold RobotoFlex][\textbf]

%% How to enable weight/width/opsz/… as we can in https://v-fonts.com/ for this font? 

\end{document}

%%% Local Variables: 
%%% mode: latex 
%%% TeX-engine: luatex
%%% TeX-master: t 
%%% End:


答案1

我们的想法是使用:

\fontspec[RawFeature={+axis={wght=900}}, Renderer=Harfbuzz]{yourfont.ttf}

(这Renderer=Harfbuzz只是为了避免我遇到的一些小故障,可以与 LuaLaTeX 一起开箱即用)

wght轴的名称。可变字体中可以有多个轴,但也可以有预设(又称实例)来自动设置它们。例如,您可以ExtraBlack Italic使用以下方式加载预设:

\fontspec[Renderer=Harfbuzz, RawFeature={instance={ExtraBlack Italic}}]{yourfont.ttf}

要获取这些轴/实例的列表,有很多不同的方法:

  • 如果您可以访问字体的文档,则使用它会更容易。例如,页面https://v-fonts.com/直接指定轴列表,如:在此处输入图片描述

  • 如果您无权访问文档,但如果它已加载到浏览器中,则可以使用 Firefox 调试工具:右键单击文本,然后单击“检查”,然后转到最右边的面板,确保“字体”已启用(您可能需要右键单击箭头并放大面板),并且列出了所有轴,甚至最大/最小值(您甚至可以使用光标来找到适合您的理想字体设置):在此处输入图片描述

  • 如果你的浏览器没有加载字体,你也可以使用类似的网站https://lorp.github.io/samsa/src/samsa-gui.html开源,而且非常完整,我认为是最好的一个)在此处输入图片描述或者https://opentype.js.org/font-inspector.html(开源)并检查fvar部分(遗憾的是,据我所知,在这个网站上你不能直接自己使用光标),以及轴和预设的值:在此处输入图片描述

    还有其他更花哨的(闭源)网站,例如https://wakamaifondue.com/https://fontdrop.info/或者https://www.axis-praxis.org/,您可以在其中调整值:在此处输入图片描述不幸的是,对于最后两个网站,这些工具似乎只打印轴名称的“漂亮”版本,而不是其真实名称。为了获得真正的 4 个字母名称,我再次使用 Firefox:在此处输入图片描述

  • 据我所知,otfinfo可以使用 打印特征,-f但不能直接打印轴,您只能执行otfinfo -t yourfont并检查列表中是否有fvar表(如果您转储它,它将只是二进制文件)。使用命令行,我只能使用ttxfrom fontforge-fonttools(这是 nix 包管理器中的名称,您可能需要安装fonttools或其他东西):在这种情况下运行:

$ ttx -t fvar RobotoFlex\[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght\].ttf

它将创建一个.ttx文件(名称在该命令的输出中),其中包含预设和轴名称/默认值/最小值/最大值,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.38">

  <fvar>

    <!-- Optical Size -->
    <Axis>
      <AxisTag>opsz</AxisTag>
      <Flags>0x0</Flags>
      <MinValue>8.0</MinValue>
      <DefaultValue>14.0</DefaultValue>
      <MaxValue>144.0</MaxValue>
      <AxisNameID>256</AxisNameID>
    </Axis>

    <!-- Weight -->
    <Axis>
      <AxisTag>wght</AxisTag>
      <Flags>0x0</Flags>
      <MinValue>100.0</MinValue>
      <DefaultValue>400.0</DefaultValue>
      <MaxValue>1000.0</MaxValue>
      <AxisNameID>257</AxisNameID>
    </Axis>



    <!-- Thin -->
    <NamedInstance flags="0x0" subfamilyNameID="269">
      <coord axis="opsz" value="14.0"/>
      <coord axis="wght" value="100.0"/>
      <coord axis="GRAD" value="0.0"/>
      <coord axis="wdth" value="100.0"/>
      <coord axis="slnt" value="0.0"/>
      <coord axis="XOPQ" value="96.0"/>
      <coord axis="YOPQ" value="79.0"/>
      <coord axis="XTRA" value="468.0"/>
      <coord axis="YTUC" value="712.0"/>
      <coord axis="YTLC" value="514.0"/>
      <coord axis="YTAS" value="750.0"/>
      <coord axis="YTDE" value="-203.0"/>
      <coord axis="YTFI" value="738.0"/>
    </NamedInstance>

    <!-- ExtraLight -->
    <NamedInstance flags="0x0" subfamilyNameID="270">
      <coord axis="opsz" value="14.0"/>
      <coord axis="wght" value="200.0"/>
      <coord axis="GRAD" value="0.0"/>
      <coord axis="wdth" value="100.0"/>
      <coord axis="slnt" value="0.0"/>
      <coord axis="XOPQ" value="96.0"/>
      <coord axis="YOPQ" value="79.0"/>
      <coord axis="XTRA" value="468.0"/>
      <coord axis="YTUC" value="712.0"/>
      <coord axis="YTLC" value="514.0"/>
      <coord axis="YTAS" value="750.0"/>
      <coord axis="YTDE" value="-203.0"/>
      <coord axis="YTFI" value="738.0"/>
    </NamedInstance>

也可以看看https://www.overleaf.com/learn/latex/Articles/An_overview_of_technologies_supporting_the_use_of_colour_emoji_fonts_in_LaTeX

梅威瑟:

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{fontspec}

\begin{document}

\NewDocumentCommand{\myText}{O{}O{}}{\makebox[4.5cm][l]{#1:} {#2{Here is a test of me changing fonts}}}

\myText[Default]

%% In optional argument, we can enable font features (the one that you can see when typing otfinfo -f yourfile.ttf), where
%% fontspec translates 4 letter features like "kern" into a more user-friendly interface. The map between low-level and high-level is given
%% in table 4 page 38 of https://mirror.lyrahosting.com/CTAN/macros/unicodetex/latex/fontspec/fontspec.pdf
\fontspec[]{Times New Roman} \myText[Times New Roman]

\fontspec[]{Times New Roman} \myText[Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=3]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

\fontspec[AutoFakeBold=5]{Times New Roman} \myText[Fake Bold Times New Roman][\textbf]

%% Download here https://github.com/googlefonts/roboto-flex/blob/main/fonts/RobotoFlex%5BGRAD%2CXOPQ%2CXTRA%2CYOPQ%2CYTAS%2CYTDE%2CYTFI%2CYTLC%2CYTUC%2Copsz%2Cslnt%2Cwdth%2Cwght%5D.ttf
\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[RobotoFlex]

\fontspec{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Bold RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={+axis={wght=100}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Weight 100 RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={+axis={wght=300}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Weight 300 RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={+axis={wght=500}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Weight 500 RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={+axis={wght=700}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Weight 500 RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={+axis={wght=900}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[Weight 900 RobotoFlex][\textbf]

\fontspec[Renderer=Harfbuzz, RawFeature={instance={ExtraBlack Italic}}]{RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf} \myText[ExtraBlack Italic][\textbf]

\end{document}

%%% Local Variables: 
%%% mode: latex 
%%% TeX-engine: luatex
%%% TeX-master: t 
%%% End:

相关内容