首页
学习
活动
专区
圈层
工具
发布

dotnet 读 WPF 源代码笔记 聊聊 OpenType 定义的字体特性

本文记录我读 WPF 源代码的 OpenType 字体特性标签 OpenType Feature Tags 的笔记内容 本文部分内容由 AI 辅助记录和整理 在 WPF 里面,关于 Feature Tag...Titling(titl):标题字形,专门为大字号标题设计的字形,通常更简洁、笔画更粗,避免小字号用的细节在大字号下显得冗余。...LocalizedForms(locl):本地化字形,根据语言区域自动切换对应字形,比如同一个汉字在中国大陆、台湾、日本的字形不一样,拉丁文在不同欧洲国家的变体,都靠这个特性控制。...,根据相邻字符自动替换字形(比如手写体中同一个字母在词首/词中写法不同) StandardLigatures liga 标准连字,默认开启,把fi、fl这类容易重叠的字符组合合并成专门设计的连字,提升易读性.../VowelJamoForms/TrailingJamoForms hngl/ljmo/vjmo/tjmo 谚文(朝鲜语)合成适配,保证谚文的首/中/尾音正确组合显示 五、南亚/RTL文字专用类(普通中文排版很少用到

9210

FontLab Mac(Mac字体编辑器)激活版

FontLab mac是一款简单实用的Mac字体编辑器,你可以使用FontLab VI for Mac创建、打开、修改、绘制、空间、文字、提示和导出桌面、网页、颜色和可变字体。...具有位图自动跟踪和实时书法笔画的草稿字形。借助智能捕捉和实时数字和视觉测量,以分数或整数精度绘制和编辑漂亮、平滑、一致的字形。优化您的绘图:创建重叠、简化路径、平衡茎。...在保持笔画粗细的同时进行缩放,全局调整重量和宽度,查找并修让文字好看从可变组件或自调整段或角蒙皮构建和组装字形。只需双击即可添加重音字形。感觉像文本编辑器的多行选项卡或窗口中的空格和字距。...使用自动生成的OpenType 功能添加连字、小型大写字母、旧式数字等排版智能,并在集成的最先进的复杂脚本文本引擎中对其进行测试。

62720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET WebShell 免杀系列之Unicode编码

    同时,如果被编码的字符大部分是 ASCII 字符,因为只占用一个字节,UTF-8 也最节省空间 .NET 在设计过程中就考虑了对 Unicode 字符的支持,char是 .NET Framework 中的...所以在 UTF-32 中,每个字符占用 4 个字节,它是一种定长编码格式,使用32位表示Unicode中的一个码位。由于Unicode的码位实际只用了21位,所以多余部分前导0。...3.5 补充专用平面 补充专用平面全称Supplement­ary Special-purpose Plane,简称 SSP,码位范围 U+E0000 - U+EFFFF ,该区域包含非图形符号和替代字形扇区...零宽度非连接器:ZERO WIDTH NON-JOINER(ZWNJ) U+200C、U+0000200C 通常使用在波斯语多个文字连在一起时起到分割符作用,零宽度非连接符会告诉字体引擎不要将它们组合在一起...(BOM),在 UTF-16 中,BOM 是两个字节,Big-endian 对应的 BOM 是 0xFEFF,Little-endian 对应的 BOM 是 0xFFFE。

    2.1K30

    CSS进阶05-行内格式上下文IFC

    2.1 行距Leading和半行距half-leading CSS假定每种字体都有字体指标,用于指定基线以上的特征高度和指定其下的深度。在本节中,我们使用A来表示高度(给定尺寸的给定字体)和D深度。...(有关如何为TrueType和OpenType字体查找 A和D的说明,请参阅下面的注释)请注意,这些是整个字体的度量标准,不需要与任何单个字形的上行和下行对应。...用户代理必须通过其相关基线将非替换的行内框中的字形彼此对齐。然后,对于每个字形,确定A和D。需要注意的是在单个元素内的字形可能来自不同的字体,因此不需要都具有相同的A和D。...如果行内盒完全不包含字形,则认为它包含了一个带有元素的首个可用字体的A和D的支柱(一个零宽度的不可见字形) 。 接着对每个字符添加行距L,其中 L = line-height - AD。...注:推荐OpenType和TrueType字体(在转换到当前元素的字号后)的A和D使用该字体OS/2表格中的“sTypeAscender”和“sTypeDescender”特性。

    2.2K30

    你能看到这个汉字么“  ” ?关于Unicode的私人使用区(PUA) 和浏览器端显示处理

    字符集和字体 Windows 允许 在双字节字符集中 (DBCS) 和 Unicode 中对非标准字符进行本地定义。 对于 DBCS,这些非标准字符称为最终用户定义字符, (EUDC) 。...若要创建 EUDC 或 PUA 字符,用户选择指定范围内的字符值,并将 字形 添加到与该字符值相对应的条目中的字体中。 用户使用 EUDC 编辑器或使用从字体供应商处购买的字体包创建字形。...同样,应用程序可以通过在 EUDC 键下指定字体名称和关联的字体文件,将单独的 EUDC/PUA 字体与相应的字体相关联。 操作系统始终首先尝试查找当前所选字体中的 EUDC/PUA。...如果未找到该字体,则操作系统将在关联的 EUDC/PUA 字体中查找字符(如果已为当前所选字体定义了一个字体)。 如果仍然找不到字符,操作系统将在系统默认的 EUDC/PUA 字体中查找它。...显示 所以为啥微软系的应用能够显示这个字呢,上面字符集和字体描述可以看到自己可以定义EUDC,在微软字符映射表中有一类叫做“专用字符”,而这个专用字符就是我们自己可以定义的PUA区域。

    2.4K20

    CSS 尺寸单位概述

    在使用多种字体时,请记住这一点。 零宽单位: ch 和 rch ch 和 rch 单位基于用于渲染的字体中零字形的宽度或高度进行度量。当文档的内联轴为水平轴时,计算基于其宽度。...X 高度和大写高度单位:ex/rex 和 cap/rcap 在字体设计中,x-height是指小写字母 x 字形从基线测量的高度。...在某些字体中,尖顶或圆形大写字母(如 A、O 和 S)的顶端高度可能会稍高一些。 image.png 大写高度单位(cap)是相对于元素第一个可用字体的已用大写高度来计算的。...有些字体在向浏览器公开字体指标方面做得很差,或者缺乏可靠的指标。其他字体可能缺少小写 x 字形,或使用阿拉伯语等非拉丁字体。...中文、日文和韩文字体中的字形通常具有相同的宽度和高度。因此,对于这些字符集,ic 单位可以很好地将文本限制为每行特定的字形数。

    1.2K10

    Unity-Optimizing Unity UI(UGUI优化)04 UI Controls

    在Unity中组件中的文本经根据使用字符进行创建图集。 每个不同Font对象将保留自己的纹理图集,即使它与另一种字体在同一字体系列中。...从性能分析来看,重要的是理解Unity UI为每个不同的大小、风格和字符维护一个字形在字体图集中。...Specialized glyph renderers(专用字形渲染器) 对于字形众所周知的情况,在每个字形之间具有相对固定的位置,编写自定义组件以显示显示这些字形的精灵显然更有利。...任何在fonts lsit中将加载到内存中,如果首选字体中没有,将在备用字体在FontName中查找。...在TMP上使用适配的时候,唯一要考虑的使二叉树查找合适的大小。在使用自动大小时候最好进行最长最大文本块测试。一旦确定了合适的石村,就该禁用组件的自动尺寸,并手动设置其他文本对象的最佳字号。

    4.2K20

    探究WPF中文字模糊的问题:TextOptions的用法

    在实际应用中的体现就是前边说的文字模糊,奇数单位宽度的直线两侧有很细的淡色边缘,如果直线宽度只有1个设备无关单位,肉眼看到的线条颜色会比实际指定的颜色要浅一点。...绘制的字体形状与字体文件中的轮廓保持高保真。创建字形位图或者字形与字形之间的相对定位时,不会考虑最终位置。 Display:WPF4.0中引入的新的格式化文本的度量模式。它使用GDI兼容的文本度量。...该模式下每个字形的宽度都是整数个像素,字形的大小和换行与基于GDI的框架相似(比如WinForm)。这也就意味着字形的大小和换行不完全准确。...两种模式都有各自的优势和缺点,Ideal模式可以提供最佳的字形和间距,减少用户阅读疲劳,但是在较小的字体情况下,文字渲染会模糊。...Ideal模式在大于15pt的字体情况下,和Display模式渲染的文字一样清晰,且具有更好的字形和间距。此外以下三种情况也应选择Ideal模式。

    1.4K10

    PDF Explained(翻译)第六章 文本和字体

    从文本空间到用户空间的转换决定了文本在页面上放置的位置。文本字符串中第一个字形的原点位于文本空间的原点。 有两种矩阵: 文本矩阵(Tm):定义了下一个字形的变换方式。...在PDF中,字体由字体字典组成, 字典中定义了度量,字符集和编码(将文本字符串中的字符代码映射到字体中的字符),以及字体程序(实际的字体文件)。.../FirstChar + 1),给出这些字符的字形宽度,单位是以千分之一的文本空间单位。.../FontDescriptor** 间接引用字典 字体描述符字典,提供字体的度量(字形宽度除外) /Encoding 名称字典 字体的字符编码,例如/MacRomanEncoding或/WinAnsiEncoding...该字体共有256个字符,/Widths数组为每个字符提供宽度值。 字体编码 字体编码描述字符编码(内容流字符串中的字符)和字体中的字形描述之间的映射。

    1.8K30

    Wine 字体加载机制探秘:Windows 应用字体缺失问题分析

    接下来,它会在字体库中搜寻对应的字体文件(如tahoma.ttf)。一般情况下会从三个地方进行查找: Wine自带字体库: 位于Wine安装目录下的......用户注册的外部字体: 在HKEY_CURRENT_USER\Software\Wine\Fonts\External Fonts中手动指定的、位于任何位置的字体文件。...第四棒:字体链接 (FontLink) 当遇到特殊情况,比如需要用 Tahoma 字体显示一个中文字符“你”时,tahoma.ttf 中根本不包含中文字形。...如果系统中存在宋体字体文件,Wine 就会从宋体文件中提取“你”的字形,并成功完成显示。 为何会出现“方块字”? 理解了上述流程,方框字的成因便一目了然。...就拿注册表编辑器这个应用来说,界面上使用的是 "MS Shell Dlg 2",通过第一步,知道该使用 "Tahoma",然后查找到字体文件是 tahoma.ttf,我们知道这个字体文件中是不包含中文字形的

    92010

    OpenGL ES 文字渲染

    在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。...在实际的生产环境中,一般会将这张小图转换成灰度图,减少不必要的数据拷贝和内存占用,然后在渲染的时候可以为灰度图上色,作为字体的颜色。...FT_Set_Pixel_Sizes 用于设置文字的大小,此函数设置了字体面的宽度和高度,将宽度值设为0表示我们要从字体面通过给出的高度中动态计算出字形的宽度。...一个字体面中 Face 包含了所有字形的集合,我们可以通过调用 FT_Load_Char 函数来激活当前要表示的字形。...然而每次渲染的时候都去重新加载位图显然不是高效的,我们应该将这些生成的数据储存在应用程序中,在渲染过程中再去取,重复利用。

    2.3K70

    OpenGL ES 文字渲染方式有几种?

    在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。...在实际的生产环境中,一般会将这张小图转换成灰度图,减少不必要的数据拷贝和内存占用,然后在渲染的时候可以为灰度图上色,作为字体的颜色。...FT_Set_Pixel_Sizes 用于设置文字的大小,此函数设置了字体面的宽度和高度,将宽度值设为 0 表示我们要从字体面通过给出的高度中动态计算出字形的宽度。...一个字体面中 Face 包含了所有字形的集合,我们可以通过调用 FT_Load_Char 函数来激活当前要表示的字形。...然而每次渲染的时候都去重新加载位图显然不是高效的,我们应该将这些生成的数据储存在应用程序中,在渲染过程中再去取,重复利用。

    2.8K31

    文字排版入门—— 排版基础、CoreText和图文混排

    在某些字体中,相同的字符可能会包括多个的字形: “é” = “e” + “´” (一个字符由两个字形组合而成) 一个字形,也可以容纳多个字符,如下:(右边的字形是连写ff,包括两个字符f) ?...这是多个字体组成的字型(字体族) 3、字体属性 字体属性指的是字符的字形大小和布局。...同一字体中的字符属性大致相同,常用属性包括:baseline(字符基线)、ascent(字形最高点和baseline的距离)、descent(字形最低点和baseline的距离)、leading(行间距...:字形的可见部分; kerning:文字默认排版时,宽度由advance width指定,默认会留有一小部分间隔;也可以通过设置字间距(kerning),手动调整字形之间的距离。...,但是只有CTFontManager中已注册的字体能够返回(默认字体大小12); CTFont提供的方法还有很多,列举一些比较常用的: 对字符和字形进行转换,返回true代表全部转换成功,返回false

    8.7K32

    过渡与动画 - 逐帧动画&steps调速函数

    写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果....但是在逐帧动画的场景下,这种平滑的特性恰恰毁掉了我们想要实现的逐帧动画的效果....这种效果在技术类网站中尤为常见,用等宽字体可以营造出一种终端命令行的感觉. CSS is amazing!...我们很自然的想到了使用steps()来修复第一个问题,但是不幸的是,我们所需要的步进数量是由字符的数量来决定的 CSS值与单位(第三版)规范引入了一个新的单位,表示"0"字形的宽度。...大多数场景下,我们不必关心"0"字形的宽度到底有多宽,因为在等宽字体中,"0"字形的宽度和其他所有字形的宽度是一样的。

    1.7K70

    过渡与动画 - 逐帧动画&steps调速函数

    写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果....但是在逐帧动画的场景下,这种平滑的特性恰恰毁掉了我们想要实现的逐帧动画的效果....这种效果在技术类网站中尤为常见,用等宽字体可以营造出一种终端命令行的感觉. CSS is amazing!...我们很自然的想到了使用steps()来修复第一个问题,但是不幸的是,我们所需要的步进数量是由字符的数量来决定的 CSS值与单位(第三版)规范引入了一个新的单位,表示"0"字形的宽度。...大多数场景下,我们不必关心"0"字形的宽度到底有多宽,因为在等宽字体中,"0"字形的宽度和其他所有字形的宽度是一样的。

    1.6K100

    过渡与动画 - 逐帧动画&steps调速函数

    写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果....但是在逐帧动画的场景下,这种平滑的特性恰恰毁掉了我们想要实现的逐帧动画的效果....这种效果在技术类网站中尤为常见,用等宽字体可以营造出一种终端命令行的感觉. CSS is amazing!...我们很自然的想到了使用steps()来修复第一个问题,但是不幸的是,我们所需要的步进数量是由字符的数量来决定的 CSS值与单位(第三版)规范引入了一个新的单位,表示"0"字形的宽度。...大多数场景下,我们不必关心"0"字形的宽度到底有多宽,因为在等宽字体中,"0"字形的宽度和其他所有字形的宽度是一样的。

    94010

    如何用 Rust 打造一个 ASCII 艺术渲染器

    拓展到彩色渲染、等宽字体兼容、输出到HTML/终端、多平台一致性等方向。1.需求与效果:为什么要做ASCII艺术渲染器ASCII艺术本质上是“在字符画布上复现原图的亮度/纹理信息”。...一个典型终端字体“字形”的高宽比约为2:1(高度约等于宽度的两倍),也就是一个字符在纵向上“更高”。若直接按原图比例缩放,渲染后会显得“被压扁”。...4.2字形长宽比与缩放系数字体不同、DPI不同、终端渲染引擎(GPU/CPU渲染)不同,字形的“视觉长宽比”会有细微差别。0.5是经验值,合理范围0.45~0.6。...在浅色背景下,空白字符可能“过亮”,建议:提供“反转”模式(将字符集反转)提供ANSI彩色模式(见第10节扩展)5.视觉质量的关键细节:字符集与滤波器的协同实践中,影响观感的因素有:字符集的“密度曲线”...目标宽度:100是经验平衡。更宽更细腻,但也更依赖终端宽度与字体渲染质量。宽高比:0.5的校正能显著提升“像样度”。

    11100

    HTML中       等6种空白空格的区别

    其他几种空格(       ‌‍)在不同浏览器中宽度各异。...在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加,该空格占据宽度受字体影响明显而强烈。...  它叫“半角空格”,全称是En Space,en是字体排印学的计量单位,为em宽度的一半。根据定义,它等同于字体度的一半(如16px字体中就是8px)。名义上是小写字母n的宽度。...此空格传承空格家族一贯的特性:透明的,此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响。...  它叫“全角空格”,全称是Em Space,em是字体排印学的计量单位,相当于当前指定的点数。例如,1 em在16px的字体中就是16px。

    83311
    领券