System.Windows.Media(PresentationCore.dll)中的GlyphTypeface类提供了对以EM为单位的高级宽度的访问。PDF字体描述符要求宽度为以千分之一em为单位的整数。
using System;
using System.Windows.Media; // requires PresentationCore.dll
namespace ConsoleAppFontMetrics
{
internal class Metrics
{
internal static void PrintWidths(string path)
{
var ffs = Fonts.GetFontFamilies(path);
foreach (var ff in ffs)
{
foreach (var t in ff.GetTypefaces())
{
Console.WriteLine(t.Style);
if (t.TryGetGlyphTypeface(out GlyphTypeface gt))
{
foreach (var ctg in gt.CharacterToGlyphMap)
{
var width = (int)Math.Round(gt.AdvanceWidths[ctg.Value] * 1000);
Console.WriteLine($"{(char)ctg.Key} ({ctg.Key}) Width = {width}");
}
}
}
}
}
}
}
为我的TrueType字体运行上面的代码会得到以下结果:
Normal
a (97) Width = 1160
b (98) Width = 1663
c (99) Width = 2065
输出与先前导出的PDF(来自另一个程序)中的元数据相匹配,并嵌入了字体。
8 0 obj
<<
/Type/Font
/Subtype/TrueType
/Name/F2
/BaseFont/XXXXXX
/FontDescriptor 7 0 R
/FirstChar 97
/LastChar 99
/Widths[1160 1663 2065]
>>
endobj
CIDfont宽度是在什么单位/空间中定义的?我试图为文档中的glyph获取设备空间坐标(或者,在我的例子中,相当于默认用户空间),但我在复合字体的glyph置换方面遇到了问题。 国际标准化组织规范(CIDFonts上的8.7.1)说DW是以用户单位定义的。这似乎是一个奇怪的选择,因为其他字体类型(除了Type3)的宽度都是以字形空间定义的,但是W中的宽度也是以用户单位定义的是有意义的。 但情况似
问题内容: 当使用 固定宽度的字体时 ,我想用 字符 指定HTML元素的宽度。 “ em”单位应该是M字符的宽度,因此我应该能够使用它来指定宽度。这是一个例子: 结果不是我想要的结果,因为浏览器行在第15列之后而不是10处中断: (结果是Firefox和Chromium,都在Ubuntu中。) 问题答案: 1em是M的高度,而不是宽度。同样适用于ex,即x的高度。一般来说,这些是大写和小写字母的高
C 11首先引入了对通过用户定义的文本在C中定义新文本的支持。C 11或更高版本是否也为
; StrStr ; 输入,堆栈顶 = 要查找的字串 ; 堆栈顶-1 = 在该字串中查找 ; 输出,堆栈顶 (替换为字串剩余部分) ; 不改变其它变量值。 ; ; 用法: ; Push "this is a long ass string" ; Push "ass" ; Call StrStr ; Pop $R0 ; ($
http://blog.mikemccandless.com/2012/03/new-index-statistics-in-lucene-40.html 该链接(向下一步,发现提到了长度)谈到了在索引时访问值。我希望能够在索引后这样做。该链接还谈到了将值保存为doc值,但没有给出如何这样做的示例。 如果有人能提供保存文档长度或在索引后访问文档的示例,这将非常有帮助。谢了。
工作解决方案: 破“解”: 我们将单词字符定义为以下任一项: null null 第一行包含一个整数n,表示句子的数目。后面的每一行都包含一个由非单词字符分隔的单词组成的句子。下一行包含一个整数,表示查询的数量。后续行中的每一行都包含一个要检查的字符串。 制约因素 1≤n≤100 1≤q≤10 作为现有的子字出现时间。 作为悲观主义者的子词出现时间。 作为Optimist的子词出现时间。 whil