<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HusterYP的博客]]></title><description><![CDATA[Android]]></description><link>https://blog.youkuaiyun.com/HusterYP</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HusterYP]]></copyright><item><title><![CDATA[iOS 实现微信读书的仿真翻页]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/155422613</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/155422613</guid><author>HusterYP</author><pubDate>Sun, 30 Nov 2025 15:37:12 +0800</pubDate><description><![CDATA[iOS实现翻页效果可通过UIPageViewController轻松完成，支持仿真翻页(.pageCurl)和普通滑动(.scroll)两种模式。核心配置包括设置transitionStyle和navigationOrientation属性，通过dataSource提供页面内容，delegate处理翻页状态。仿真翻页效果仅需约100行代码即可实现，系统自动处理手势交互，开发者只需关注页面内容管理。此外，还可通过spineLocation控制书脊位置，实现单双页显示模式切换。]]></description><category></category></item><item><title><![CDATA[精读 GitHub - servo 浏览器（一）]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/155139664</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/155139664</guid><author>HusterYP</author><pubDate>Sat, 22 Nov 2025 21:33:56 +0800</pubDate><description><![CDATA[Servo是一款实验性的现代浏览器引擎，采用Rust语言编写，具有并行化布局和渲染的创新理念。文章介绍了Servo的安装使用方法（以macOS为例），包括编译步骤和运行网页的命令。重点解析了Servo的架构设计，包括目录结构协同工作流程、多Pipeline并行处理机制，以及Script、Layout和Compositor三阶段的分工。文章还总结了Servo的性能优化策略，如并行计算、零拷贝处理和GPU加速等。作为学习浏览器原理和Rust语言的优秀开源项目，Servo展现了Rust在系统编程中的强大能力，其创]]></description><category></category></item><item><title><![CDATA[Swift 多线程读变量安全吗？]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/155079783</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/155079783</guid><author>HusterYP</author><pubDate>Fri, 21 Nov 2025 01:15:47 +0800</pubDate><description><![CDATA[本文对比了Rust和Swift在多线程读取变量时的安全性差异。通过分析Swift源码发现，Swift通过原子操作保证引用计数的线程安全：swift_retain和swift_release都采用原子读写和CAS操作更新引用计数，其中release还使用memory_order_release防止指令重排。这些机制确保了Swift在多线程环境下安全读写变量而不会崩溃，与Rust中RefCell的行为形成鲜明对比。文章通过代码示例和底层实现分析，解释了Swift实现线程安全的关键技术细节。]]></description><category></category></item><item><title><![CDATA[精读GitHub - swift-markdown-ui]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/154922443</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/154922443</guid><author>HusterYP</author><pubDate>Mon, 17 Nov 2025 01:18:02 +0800</pubDate><description><![CDATA[Swift-MarkdownUI 是一个用于在 SwiftUI 中渲染和自定义 Markdown 文本的开源库，支持 GitHub 风格 Markdown 规范，具有强大的主题自定义能力。该库提供多种使用方式，包括直接解析 Markdown 字符串或通过 DSL 语法构建内容，支持样式覆盖和主题替换。其架构分为解析器（基于 cmark-gfm）、渲染器、主题系统和 DSL 构建器四部分，将 Markdown 转换为 BlockNode 和 InlineNode 节点树后渲染为 SwiftUI 视图。该项目自]]></description><category></category></item><item><title><![CDATA[Rust RefCell 多线程读为什么也panic了？]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/154877517</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/154877517</guid><author>HusterYP</author><pubDate>Sat, 15 Nov 2025 16:37:49 +0800</pubDate><description><![CDATA[本文通过Rust代码实例揭示了RefCell在多线程环境中的隐患：看似安全的并发读操作也会panic。作者发现即使只调用borrow()，由于RefCell内部使用非原子计数器跟踪借用状态，多线程访问时会导致计数器竞争，触发BorrowError。这解释了为何单纯的多线程读操作也会违反借用规则。文章最后预告将在公众号探讨Swift中类似情况的安全性。]]></description><category></category></item><item><title><![CDATA[Vibe Coding 实战！花了两天时间，让 AI 写了一个富文本渲染引擎！]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/154757683</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/154757683</guid><author>HusterYP</author><pubDate>Thu, 13 Nov 2025 00:00:24 +0800</pubDate><description><![CDATA[摘要：本文记录了使用Claude AI从零开发iOS富文本渲染引擎的全过程。通过Prompt驱动，在两天内实现了支持文本样式、附件混排、异步排版等功能的引擎，花费约50美元。文章详细介绍了项目初始化、技术选型（基于CoreText）、架构设计（ElementTree/LayoutTree/RenderTree三棵树模型）及开发流程，包括让AI编写代码、修复Bug等环节。作者总结了Claude AI的常用命令和使用技巧，如/init初始化、@添加文件上下文等，并指出AI编程虽强大但仍需人工把控架构细节，是提效]]></description><category></category></item><item><title><![CDATA[HarfBuzz 实战：五大核心API 实例详解【附iOS/Swift实战示例】]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/154252622</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/154252622</guid><author>HusterYP</author><pubDate>Sat, 01 Nov 2025 21:11:02 +0800</pubDate><description><![CDATA[本文是HarfBuzz系列的完结篇，重点介绍HarfBuzz的核心API使用方法。文章首先讲解了hb_blob的概念和创建方式，包括从二进制数据和文件路径两种构造方法，并详细说明了内存管理模式的选择。接着介绍了hb_face相关API，包括创建、引用计数管理以及如何获取字体元数据和原始表数据。文章强调在实际使用中需要注意对象生命周期管理，确保正确的调用顺序。通过示例代码展示了如何操作字体二进制数据、获取特定字体表信息，为开发者提供了HarfBuzz核心功能的实用指南。]]></description><category></category></item><item><title><![CDATA[我在iOS/Swift工程中成功编译了HarfBuzz！]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/154045891</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/154045891</guid><author>HusterYP</author><pubDate>Wed, 29 Oct 2025 01:03:56 +0800</pubDate><description><![CDATA[iOS/Swift源码引入HarfBuzz
]]></description><category></category></item><item><title><![CDATA[搞跨端渲染？你绕不开的HarfBuzz原理]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/153946583</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/153946583</guid><author>HusterYP</author><pubDate>Mon, 27 Oct 2025 01:50:10 +0800</pubDate><description><![CDATA[本文是HarfBuzz文字排版引擎系列的第二篇，重点介绍了HarfBuzz的核心概念和塑形操作。主要内容包括：script（文字系统类型）、cluster（不可分割字符序列）、grapheme（Unicode最小书写单位）、blob（二进制数据容器）、face（字体解析）、font（字体实例）等关键概念，以及字形替换、定位、重排等塑形操作。文章还对比了cluster与grapheme的区别，并说明了HarfBuzz对象类型的生命周期管理机制。最后提供了相关技术文章的扩展阅读链接。]]></description><category></category></item><item><title><![CDATA[HarfBuzz概览]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/153898733</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/153898733</guid><author>HusterYP</author><pubDate>Sat, 25 Oct 2025 23:54:48 +0800</pubDate><description><![CDATA[本文介绍了HarfBuzz这一开源的文本塑形引擎。HarfBuzz能够将Unicode字符序列转换为字形序列及其位置信息，处理连字、重排等复杂排版需求。文章解释了其名称来源、核心功能（包括字体处理）以及局限性（如不处理双向文本、多字体属性文本等）。HarfBuzz被广泛应用于Android、ChromeOS、Linux等操作系统，Chrome、Firefox等浏览器，以及Figma、Adobe系列软件等知名应用中。文本塑形是字符串显示流程中的关键环节，HarfBuzz在此过程中发挥着重要作用。]]></description><category></category></item><item><title><![CDATA[文章预告：HarfBuzz从原理到实战！]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/153871674</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/153871674</guid><author>HusterYP</author><pubDate>Sat, 25 Oct 2025 12:11:46 +0800</pubDate><description><![CDATA[未来几周，我将介绍HarfBuzz从原理到实战的过程，文章首发公众号：「非专业程序员Ping」，欢迎订阅！]]></description><category></category></item><item><title><![CDATA[iOS/Swift：深入理解iOS CoreText API]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/153588161</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/153588161</guid><author>HusterYP</author><pubDate>Sun, 19 Oct 2025 21:43:13 +0800</pubDate><description><![CDATA[文章摘要： 本文介绍了iOS/macOS中的CoreText排版引擎，重点解析了其核心概念和API。内容涵盖CTFramesetter、CTFrame、CTLine、CTRun等层级结构，详细说明了各模块的功能与关联，并通过代码示例演示了CTFramesetter创建文本框架、计算文本尺寸等关键操作。文章还展示了实际应用场景，如自适应高度富文本视图、圆形路径文字排版和文本分页效果，为开发者实现自定义富文本渲染提供了技术指导。更多代码可通过公众号获取。]]></description><category></category></item><item><title><![CDATA[新手小白也能看懂的LLDB技巧/逆向技巧]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/153293892</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/153293892</guid><author>HusterYP</author><pubDate>Wed, 15 Oct 2025 01:52:02 +0800</pubDate><description><![CDATA[本篇文章更多面向小白入门，不需要你有太多的汇编、LLDB知识，我们将结合一些典型场景来举一反三，当然，如果大家有更好的奇技淫巧欢迎一起交流、学习。]]></description><category></category></item><item><title><![CDATA[逆向分析CoreText中的字体级联/Font Fallback机制]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/152630767</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/152630767</guid><author>HusterYP</author><pubDate>Tue, 07 Oct 2025 01:59:27 +0800</pubDate><description><![CDATA[CoreText字体回退机制解析 摘要 本文通过逆向分析CoreText的CTFontCopyDefaultCascadeListForLanguages实现，揭示了系统字体回退机制的工作原理。研究发现系统采用双通道处理策略：1）针对系统UI字体（如.SFUI-Regular）的预设Fallback快速通道；2）基于配置文件的通用Fallback通道。系统会优先检查预设列表，若无命中则加载全局配置文件动态生成回退链，并缓存结果以提高性能。该机制有效解决了单一字体无法覆盖所有Unicode字符时的渲染问题，为]]></description><category></category></item><item><title><![CDATA[从0到1自定义文字排版引擎：原理篇]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/152386827</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/152386827</guid><author>HusterYP</author><pubDate>Thu, 02 Oct 2025 01:28:03 +0800</pubDate><description><![CDATA[本文系统介绍了多语言文本排版的核心流程，包括预处理、分段、双向文本处理（BiDi）等关键步骤。重点解析了BiDi算法如何将逻辑顺序转换为视觉顺序，详细说明了字符类型、段落基本方向、嵌套模式等概念，并通过示例演示了不同语言方向的文本如何通过嵌套等级调整实现正确排版。文章还解释了为什么需要多级嵌套以及如何处理特殊字符的镜像问题，为深入理解现代文本排版引擎的工作原理提供了技术基础。]]></description><category></category></item><item><title><![CDATA[一文读懂Font文件]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/151842992</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/151842992</guid><author>HusterYP</author><pubDate>Fri, 19 Sep 2025 01:06:54 +0800</pubDate><description><![CDATA[本文解析了字体文件的结构与关键信息。以NewYork.ttf为例，介绍了TrueType和OpenType格式的区别，并通过ttx工具将字体转换为XML进行解析。重点分析了几个核心表：GlyphOrder（字形ID映射）、head（全局信息如unitsPerEm）、hhea（横向排版信息）、OS_2（平台特定参数）和hmtx（水平度量）。特别说明了不同平台（macOS/Windows）读取ascent/descent值的差异，以及ulUnicodeRange表示的字符支持范围。这些基础概念对理解文字排版引擎]]></description><category></category></item><item><title><![CDATA[一文读懂字符、字形、字体]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/151663066</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/151663066</guid><author>HusterYP</author><pubDate>Sun, 14 Sep 2025 09:00:00 +0800</pubDate><description><![CDATA[本文系统介绍了文字排版中的核心概念：Character（字符）是抽象语义单位，Glyph（字形）是具体绘制形式，二者并非一一对应。Font包含Typeface（设计风格）、Font Family（字体集）和Font Descriptor（字体属性）等概念。文章详细解析了文字排版中的metrics、advance width、kerning等术语，以及ascent、descent与lineHeight的关系，通过图示直观展示了字形测量和行间距计算原理。这些基础知识对实现文本分词、测量和布局系统至关重要。]]></description><category></category></item><item><title><![CDATA[一文读懂字符与编码]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/151592697</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/151592697</guid><author>HusterYP</author><pubDate>Fri, 12 Sep 2025 00:17:03 +0800</pubDate><description><![CDATA[本文介绍了字符编码的基本概念，分为三个部分：1)字符是指用户可见的字母、数字或符号；2)字符编码标准(如ASCII、Unicode)定义字符到编码的映射，Unicode为所有字符分配唯一码位(Code Point)；3)字符编码方式(UTF-8/16/32)决定字符如何存储，UTF-8采用1-4字节可变长度以节省空间。文章还解释了Code Unit、组合字符等概念，并对比了不同编码方式的实现原理和特点。]]></description><category></category></item><item><title><![CDATA[虚拟内存]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/102893530</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/102893530</guid><author>HusterYP</author><pubDate>Mon, 04 Nov 2019 11:27:28 +0800</pubDate><description><![CDATA[前言

虚拟内存算是操作系统中比较重要的一部分了，内容也很多，早在看操作系统相关书籍的时候就有想要总结这一部分，但是功力不够，总感觉串不起来；经过秋招这几个月对基础知识的回顾，感觉对虚拟内存这一部分有了自己的一个认识和体系，遂趁这个机会述以成文。
本文首发自博主个人博客：虚拟内存


正文

一. 背景
在计算机硬件体系结构中，总有这样一种规律：性能越好，价格越高；为了中和性价比，在计算机硬件体系...]]></description><category></category></item><item><title><![CDATA[Android之Awesome-UI]]></title><link>https://blog.youkuaiyun.com/HusterYP/article/details/82952346</link><guid>https://blog.youkuaiyun.com/HusterYP/article/details/82952346</guid><author>HusterYP</author><pubDate>Sat, 06 Oct 2018 17:08:42 +0800</pubDate><description><![CDATA[项目说明
Android UI 练习, 不定期更新~
Github链接: https://github.com/HusterYP/UI
欢迎star and fork !
若文中部分Gif图片无法预览, 可以跳转到项目ReadMe中查看
项目中已声明参考链接~
说明: 项目中本来有部分自定义UI控件公共部分还可抽取, 但是为了方便独立学习之用, 所以没有再次抽取

详细说明

一. utils
公...]]></description><category></category></item></channel></rss>