Mik*_*keQ 79 fonts uilabel uifont ios4 ios
我正在尝试使用从Adobe Font Collection Pro Package获得的Helvetica Neue Condensed字体.不幸的是,当我在一个内部使用它时,似乎绘制不正确UILabel.
行高似乎是正确计算的(我认为),但是当显示字体时,它会与边界框的最顶部对齐.我调用[myLabel sizeToFit]并仅调整宽度以产生此屏幕捕获:

我对字体的粗体和常规版本都有同样的问题.我能够从OSX中取出一个版本的Helvetica Neue Bold并将其放在我的设备上并显示正常(上图中的绿色背景).
字体文件或我的代码导致它以这种方式绘制可能有什么问题?
kol*_*hiy 121
我张贴涉及修补TTF字体文件的解决方案在这里:
这是适用于我的自定义字体的解决方案,在UILabel,UIButton等中存在相同的问题.事实上,字体的问题是它的上升属性与系统字体的值相比太小了.Ascender是字体字符上方的垂直空格.要修复字体,您必须下载Apple Font Tool Suite命令行实用程序.然后取你的字体并执行以下操作:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
Run Code Online (Sandbox Code Playgroud)
这将创造Bold.hhea.xml.使用文本编辑器打开它并增加ascender属性值.您将需要进行一些实验,以找出最适合您的确切值.在我的情况下,我将其从750更改为1200.然后使用以下命令行再次运行该实用程序,将您的更改合并回ttf文件:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
Run Code Online (Sandbox Code Playgroud)
然后在您的应用中使用生成的ttf字体.
Jos*_*Lin 64
所以这是kolyuchiy答案的修改版本.
我用Glyphs打开我的字体,然后导出它而不修改任何东西.不知何故,神奇地,垂直对齐问题消失了!
更好的是,新字体与类似的方法很好地匹配sizeWithFont:,所以它没有Joshua提到的问题.
我接过一看HHEA表kolyuchiy提到的命令,并注意到修改不只是字形ascender,也lineGap和numberOfHMetrics我.
以下是原始数据:
versionMajor="1"
versionMinor="0"
ascender="780"
descender="-220"
lineGap="200"
advanceWidthMax="1371"
minLeftSideBearing="-73"
minRightSideBearing="-52"
xMaxExtent="1343"
caretSlopeRise="1"
caretSlopeRun="0"
caretOffset="0"
metricDataFormat="0"
numberOfHMetrics="751"
Run Code Online (Sandbox Code Playgroud)
之后:
versionMajor="1"
versionMinor="0"
ascender="980"
descender="-220"
lineGap="0"
advanceWidthMax="1371"
minLeftSideBearing="-73"
minRightSideBearing="-52"
xMaxExtent="1343"
caretSlopeRise="1"
caretSlopeRun="0"
caretOffset="0"
metricDataFormat="0"
numberOfHMetrics="748"
Run Code Online (Sandbox Code Playgroud)
所以故事的寓意 - 不仅要增加上升者,还要修改其他相关价值观.
我不是排版专家所以我无法解释原因和方法.如果有人能提供更好的解释,我们将不胜感激!:)
pha*_*ann 31
iOS 6尊重字体的lineGap属性,而iOS 7则忽略它.因此,只有线间隙为0的自定义字体才能在两个操作系统上正常工作.
解决方案是使lineGap 0和使上升器相应更大.根据上面的答案,一种解决方案是从字形导入和导出.但请注意,该应用的未来版本可能会修复此"错误".
一个更强大的解决方案是根据这篇文章自己编辑字体.特别,
ftxdumperfuser -t hhea -A d YOUR_FONT.ttfascender通过lineGap向其添加属性的值来编辑属性.例如,如果lineGap为200且ascender为750,则为ascender950.lineGap为0.ftxdumperfuser -t hhea -A f YOUR_FONT.ttf执行此操作后,您可能需要相应地调整UI.
小智 6
对于那些运行 OS X El Capitan 并来到此线程的人,您可能已经注意到 Apple 字体工具套件不再兼容(至少目前如此)。
但您仍然可以使用免费字体编辑软件FontForge执行kolyuchiy和Joseph Lin描述的更改。
使用 FontForge 打开字体并在顶部菜单中选择“Element”,然后转到“Font Info”>“OS/2”>“Metrics”。您要在此处编辑 HHEad Line Gap 和 HHEad Ascent Offset 值。
完成必要的编辑后,您可以在“文件”>“生成字体”中导出字体并选择正确的字体格式
| 归档时间: |
|
| 查看次数: |
23736 次 |
| 最近记录: |