2025年10月21日

摘要: 完整内容也可以在公众号「非专业程序员Ping」查看 一、引言 什么是Character?什么是Glyph?Character和Glyph是否一一对应?我们常说的Font又包含哪些东西?如果要自己实现一套文本的分词、测量和布局,又需要理清楚哪些概念?ascent、descent、lineHeight之 阅读全文
posted @ 2025-10-21 13:15 非专业程序员Ping 阅读(22) 评论(1) 推荐(1)
摘要: 完整内容也可以在公众号「非专业程序员Ping」查看 一、字符/Character 对用户可见的“一个字符”,通常是我们在屏幕上看到的一个字母、数字、emoji 或组合字符。 比如:a、é、👨‍👩‍👧‍👦 二、字符编码标准/字符集 字符编码标准定义的是如何将字符映射到唯一编码,常见的字符编码标 阅读全文
posted @ 2025-10-21 00:38 非专业程序员Ping 阅读(107) 评论(0) 推荐(1)

2025年10月19日

摘要: 这篇文章是从0到1自定义富文本渲染的原理篇之一,此外你还可能感兴趣: 一文读懂字符与编码 一文读懂字符、字形、字体 一文读懂字体文件 从0到1自定义文字排版引擎:原理篇 逆向分析CoreText中的字体级联/Font Fallback机制 新手小白也能看懂的LLDB技巧/逆向技巧 更多内容可订阅公众 阅读全文
posted @ 2025-10-19 21:42 非专业程序员Ping 阅读(13) 评论(0) 推荐(0)
摘要: 完整内容也可以在公众号「非专业程序员Ping」查看 一、引言 本文基于Xcode 16.4,iOS 18.5模拟器分析,不同系统版本可能有区别。 前面我们介绍了自定义文字排版引擎的原理,其中有一个复杂部分是字体Fallback,本文将通过逆向手段分析CoreText中CTFontCopyDefaul 阅读全文
posted @ 2025-10-19 14:29 非专业程序员Ping 阅读(10) 评论(0) 推荐(0)

2025年10月18日

摘要: 本篇文章更多面向小白入门,不需要你有太多的汇编、LLDB知识,我们将结合一些典型场景来举一反三,当然,如果大家有更好的奇技淫巧欢迎一起交流、学习。 阅读全文
posted @ 2025-10-18 16:07 非专业程序员Ping 阅读(105) 评论(0) 推荐(0)

2017年3月26日

摘要: 编译器整合为一个完整的EXE 文件( 图 1-1 )。所谓UI 资源是指功能菜单、对话框 外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各 种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓 的资源描述档(.rc)中描述它们。R 阅读全文
posted @ 2017-03-26 09:13 非专业程序员Ping 阅读(174) 评论(0) 推荐(0)
摘要: .窗口的创建步骤: 1.设计一个窗口类: WNDCLASS结构体参数: (1) UINT style:窗口类的类型, (2) WNDPROC lpfnWndProc:窗口的过程,接收一个指针,在程序中会将一个回调函数赋给他,有系统自动调用 (3) int cbClsExtra:追加一定字节的额外存储 阅读全文
posted @ 2017-03-26 09:10 非专业程序员Ping 阅读(710) 评论(0) 推荐(0)
摘要: (1)HWDN:窗口句柄 (2)WPARAM:消息的附加信息;LPARAM:消息的附加信息 (3)WORD:16位整数;DWORD:32位;DWORD time :表示的是消息被传递出去的时间 (4)POINT:当消息被投递的时候,光标的位置 5.WinMain函数:入口函数;参数: (1).HIN 阅读全文
posted @ 2017-03-26 09:08 非专业程序员Ping 阅读(214) 评论(0) 推荐(0)

2017年3月25日

摘要: #include<iostream>using namespace std; int main(){ int *I; //我曾是一个漂泊无放的浪子 int You; //有一天,你出现了 //我终于明白我的归处 for (int j = 10000;;) //我在佛前苦苦求了一万年 { j--; i 阅读全文
posted @ 2017-03-25 11:42 非专业程序员Ping 阅读(254) 评论(0) 推荐(0)

2017年3月20日

摘要: 先上代码: #include<iostream>using namespace std; class A{public: static int a; };int A::a; //必须在类外再次定义,否则要报错int main(){ A a1; A a2; cout << a1.a << endl; 阅读全文
posted @ 2017-03-20 19:19 非专业程序员Ping 阅读(119) 评论(0) 推荐(0)

导航