我正在子集化字体M PLUS 1p(中等风格)。我只需要一个字符-向左箭头,这是unicode character u2190。在子集化过程中,FontForge抱怨说,查找字符glyph 08514丢失(向上箭头),所以我把它也包括在子集中。
我已经将生成的TTF字体添加到我的Android项目(目录res/font
)中,并通过以下方式从布局文件中引用它:
<androidx.gridlayout.widget.GridLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:columnCount="3"
app:rowCount="5"
>
<Button
app:layout_row="0"
app:layout_column="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:textSize="@dimen/font_size"
app:layout_columnWeight="1"
style="?android:attr/buttonBarButtonStyle"
android:onClick="onKeyPressed"
/>
<Button
android:fontFamily="@font/custom"
app:fontFamily="@font/custom"
app:layout_row="0"
app:layout_column="2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\u2190"
android:textSize="@dimen/font_size"
app:layout_columnWeight="1"
style="?android:attr/buttonBarButtonStyle"
android:onClick="onKeyPressed"
/>
<!-- remaining buttons using the default font, just like the first one -->
</androidx.gridlayout.widget.GridLayout>
现在箭头按钮显示的比其他按钮“短”(左图)。这是一个问题,因为当按下它时,它显示的背景与其他按钮的大小不同。然而,如果我包括完整的、未修改的字体,而不是它的子集,按钮将具有正常的高度(右图)。这就是我试图实现的。x1c 0d1x
我怀疑某些属性/尺寸在字体子集中丢失了。我不知道如何保存它们。除了FontForge,我尝试了几个在线工具。要么我收到的结果是相同的行为,要么什么都没有(工具没有提供下载链接)。
请注意,在第一种情况下(字体子集)设置android:layout_height="match_parent"
没有帮助。
1条答案
按热度按时间bakd9h0s1#
FontForge似乎在子集化字体后修改字体规格以反映子集中具有较小高度的字形的规格。如果您在子集中包括延伸到基线上方较高位置和基线下方较低位置的其他字形(可以是一个在上面和下面,或者一个在上面和另一个在下面),则字体度量应当由于那些字形而具有更大的上升和下降。