SDL3_API分类参考_SDL_ttf 核心 API 集合(CategoryAPI)

2026-3-7 / 0 评论 / 5 阅读

SDL_ttf 核心 API 集合(CategoryAPI)

SDL_ttf 是 SDL 的官方字体渲染扩展库,该分类汇总了 SDL_ttf 全量核心 API,涵盖字体加载/管理、文本渲染(Surface/Renderer/GPU 三种模式)、字形/排版控制、多语言文本处理等功能,是 SDL 生态中实现高质量文本渲染的核心接口集合。


核心 API 列表(按功能分类)

一、基础初始化与版本管理

  • TTF_Init:初始化 SDL_ttf 库(必须调用,加载 FreeType/HarfBuzz 依赖)
  • TTF_Quit:清理 SDL_ttf 资源(程序退出前调用)
  • TTF_WasInit:检查 SDL_ttf 是否已初始化
  • TTF_Version:获取当前 SDL_ttf 版本信息
  • SDL_TTF_MAJOR_VERSION:SDL_ttf 主版本号宏(如 3 代表 SDL_ttf 3.x)
  • SDL_TTF_VERSION:构造版本结构体的宏
  • SDL_TTF_VERSION_ATLEAST:编译期检查 SDL_ttf 版本是否满足最低要求
  • TTF_GetFreeTypeVersion:获取底层 FreeType 库版本
  • TTF_GetHarfBuzzVersion:获取底层 HarfBuzz 排版库版本

二、字体对象(TTF_Font)管理

1. 字体加载/释放

  • TTF_OpenFont:从文件加载字体文件(指定字号)
  • TTF_OpenFontIO:从 SDL_IOStream 流加载字体(支持内存字体)
  • TTF_OpenFontWithProperties:带自定义属性加载字体(如 DPI、字体面索引)
  • TTF_CloseFont:关闭并释放字体对象
  • TTF_CopyFont:复制字体对象(继承原字体的样式/属性)
  • TTF_GetNumFontFaces:获取字体文件中的字体面数量(多字体面文件专用)

2. 字体属性查询

  • TTF_FontHasGlyph:检查字体是否包含指定 Unicode 字形
  • TTF_FontIsFixedWidth:检查字体是否为等宽字体(如 Consolas)
  • TTF_FontIsScalable:检查字体是否为可缩放矢量字体(如 TrueType)
  • TTF_GetFontAscent:获取字体上行高度(基线到字形顶部的距离)
  • TTF_GetFontDescent:获取字体下行高度(基线到字形底部的距离)
  • TTF_GetFontHeight:获取字体总高度(上行+下行)
  • TTF_GetFontLineSkip:获取字体行间距(两行文本的基线间距)
  • TTF_GetFontFamilyName:获取字体家族名称(如 "Microsoft YaHei")
  • TTF_GetFontStyleName:获取字体样式名称(如 "Bold")
  • TTF_GetFontSize:获取字体当前字号
  • TTF_GetFontWeight:获取字体字重(粗细程度)
  • TTF_GetFontStyle:获取字体样式标志(粗体/斜体等)
  • TTF_GetFontDPI:获取字体渲染的 DPI 设置
  • TTF_GetFontCharSpacing:获取字符间距
  • TTF_GetFontKerning:获取字距调整开关状态
  • TTF_GetFontOutline:获取字体描边宽度
  • TTF_GetFontHinting:获取字体提示模式(影响渲染清晰度)
  • TTF_GetFontDirection:获取字体默认排版方向
  • TTF_GetFontWrapAlignment:获取文本换行对齐方式
  • TTF_GetFontProperties:获取字体完整配置属性

3. 字体属性设置

  • TTF_SetFontSize:设置字体字号
  • TTF_SetFontSizeDPI:按 DPI 缩放设置字体字号
  • TTF_SetFontStyle:设置字体样式(粗体/斜体/下划线等)
  • TTF_SetFontWeight:设置字体字重(如 TTF_FONT_WEIGHT_BOLD)
  • TTF_SetFontCharSpacing:设置字符间距
  • TTF_SetFontKerning:开启/关闭字距调整(优化字符间距)
  • TTF_SetFontOutline:设置字体描边宽度
  • TTF_SetFontHinting:设置字体提示模式(如 TTF_HINTING_NORMAL)
  • TTF_SetFontDirection:设置字体排版方向(LTR/RTL 等)
  • TTF_SetFontLanguage:设置字体关联的语言
  • TTF_SetFontScript:设置字体关联的文字脚本(如中文/英文)
  • TTF_SetFontLineSkip:自定义字体行间距
  • TTF_SetFontWrapAlignment:设置文本换行对齐方式
  • TTF_SetFontSDF:开启/关闭 SDF(有符号距离场)渲染(适合缩放)

4. 字体回退(Fallback)

  • TTF_AddFallbackFont:添加回退字体(主字体无字形时使用)
  • TTF_RemoveFallbackFont:移除指定回退字体
  • TTF_ClearFallbackFonts:清空所有回退字体

三、字形(Glyph)操作

  • TTF_GetGlyphMetrics:获取指定字形的度量信息(宽度、偏移等)
  • TTF_GetGlyphKerning:获取两个字形间的字距调整值
  • TTF_GetGlyphImage:获取指定字形的渲染图像
  • TTF_GetGlyphImageForIndex:按字形索引获取渲染图像
  • TTF_GetGlyphScript:获取字形所属的文字脚本
  • TTF_RenderGlyph_Solid:渲染单个字形为纯色 Surface
  • TTF_RenderGlyph_Shaded:渲染单个字形为带阴影的 Surface
  • TTF_RenderGlyph_Blended:渲染单个字形为带alpha混合的 Surface
  • TTF_RenderGlyph_LCD:渲染单个字形为 LCD 优化的 Surface

四、文本渲染(基础接口)

  • TTF_RenderText_Solid:渲染文本为纯色 Surface(高性能,无抗锯齿)
  • TTF_RenderText_Shaded:渲染文本为带阴影的 Surface(有抗锯齿)
  • TTF_RenderText_Blended:渲染文本为 alpha 混合 Surface(高质量抗锯齿)
  • TTF_RenderText_LCD:渲染文本为 LCD 优化 Surface(高清显示)
  • TTF_RenderText_Solid_Wrapped:渲染自动换行的纯色文本
  • TTF_RenderText_Shaded_Wrapped:渲染自动换行的带阴影文本
  • TTF_RenderText_Blended_Wrapped:渲染自动换行的 alpha 混合文本
  • TTF_RenderText_LCD_Wrapped:渲染自动换行的 LCD 优化文本
  • TTF_MeasureString:测量文本渲染后的尺寸(不实际渲染)
  • TTF_GetStringSize:获取文本的宽高尺寸
  • TTF_GetStringSizeWrapped:获取自动换行文本的宽高尺寸

五、文本引擎(TextEngine)(高级渲染)

1. 引擎创建/销毁

  • TTF_CreateSurfaceTextEngine:创建基于 Surface 的文本引擎(CPU 渲染)
  • TTF_CreateRendererTextEngine:创建基于 SDL_Renderer 的文本引擎(2D 硬件加速)
  • TTF_CreateRendererTextEngineWithProperties:带属性创建 Renderer 文本引擎
  • TTF_CreateGPUTextEngine:创建基于 GPU 的文本引擎(3D 硬件加速)
  • TTF_CreateGPUTextEngineWithProperties:带属性创建 GPU 文本引擎
  • TTF_DestroySurfaceTextEngine:销毁 Surface 文本引擎
  • TTF_DestroyRendererTextEngine:销毁 Renderer 文本引擎
  • TTF_DestroyGPUTextEngine:销毁 GPU 文本引擎

2. 文本对象(TTF_Text)管理

  • TTF_CreateText:创建文本对象(绑定字体和文本内容)
  • TTF_DestroyText:销毁文本对象
  • TTF_SetTextString:设置文本对象的内容
  • TTF_AppendTextString:追加文本到文本对象
  • TTF_InsertTextString:插入文本到文本对象
  • TTF_DeleteTextString:删除文本对象的部分内容
  • TTF_UpdateText:更新文本对象的渲染数据
  • TTF_SetTextFont:设置文本对象关联的字体
  • TTF_SetTextColor:设置文本颜色(8位通道)
  • TTF_SetTextColorFloat:设置文本颜色(浮点通道,0.0-1.0)
  • TTF_SetTextDirection:设置文本排版方向
  • TTF_SetTextScript:设置文本所属的文字脚本
  • TTF_SetTextPosition:设置文本渲染位置
  • TTF_SetTextWrapWidth:设置文本自动换行宽度
  • TTF_SetTextWrapWhitespaceVisible:设置是否显示换行空白符
  • TTF_SetTextEngine:为文本对象绑定文本引擎
  • TTF_GetTextFont:获取文本对象关联的字体
  • TTF_GetTextColor:获取文本颜色(8位通道)
  • TTF_GetTextColorFloat:获取文本颜色(浮点通道)
  • TTF_GetTextDirection:获取文本排版方向
  • TTF_GetTextScript:获取文本所属的文字脚本
  • TTF_GetTextPosition:获取文本渲染位置
  • TTF_GetTextSize:获取文本渲染后的尺寸
  • TTF_GetTextWrapWidth:获取文本自动换行宽度
  • TTF_GetTextEngine:获取文本对象绑定的引擎

3. 高级文本渲染

  • TTF_DrawSurfaceText:使用 Surface 引擎渲染文本
  • TTF_DrawRendererText:使用 Renderer 引擎渲染文本
  • TTF_GetGPUTextDrawData:获取 GPU 文本渲染的绘制数据
  • TTF_SetGPUTextEngineWinding:设置 GPU 文本引擎的顶点缠绕方向
  • TTF_GetGPUTextEngineWinding:获取 GPU 文本引擎的顶点缠绕方向

六、文本子串/排版控制

  • TTF_GetTextSubString:获取文本指定范围的子串
  • TTF_GetTextSubStringForLine:获取文本指定行的子串
  • TTF_GetTextSubStringForPoint:获取指定坐标对应的文本子串
  • TTF_GetTextSubStringsForRange:获取指定范围的所有子串
  • TTF_GetNextTextSubString:获取下一个文本子串
  • TTF_GetPreviousTextSubString:获取上一个文本子串

七、常量与枚举

1. 字体样式

  • TTF_STYLE_NORMAL:正常样式
  • TTF_STYLE_BOLD:粗体
  • TTF_STYLE_ITALIC:斜体
  • TTF_STYLE_UNDERLINE:下划线
  • TTF_STYLE_STRIKETHROUGH:删除线

2. 字体字重

  • TTF_FONT_WEIGHT_THIN:极细
  • TTF_FONT_WEIGHT_LIGHT:细体
  • TTF_FONT_WEIGHT_NORMAL:常规
  • TTF_FONT_WEIGHT_MEDIUM:中等
  • TTF_FONT_WEIGHT_BOLD:粗体
  • TTF_FONT_WEIGHT_BLACK:黑体

3. 文本方向

  • TTF_DIRECTION_LTR:从左到右(如英文)
  • TTF_DIRECTION_RTL:从右到左(如阿拉伯语)
  • TTF_DIRECTION_TTB:从上到下(如竖排中文)
  • TTF_DIRECTION_BTT:从下到上
  • TTF_DIRECTION_INVALID:无效方向

4. 字体提示模式

  • TTF_HINTING_NONE:无提示(模糊)
  • TTF_HINTING_LIGHT:轻量提示
  • TTF_HINTING_NORMAL:常规提示
  • TTF_HINTING_MONO:单色提示(等宽字体优化)

5. 对齐方式

  • TTF_HORIZONTAL_ALIGN_LEFT:左对齐
  • TTF_HORIZONTAL_ALIGN_CENTER:居中
  • TTF_HORIZONTAL_ALIGN_RIGHT:右对齐

6. 图像类型

  • TTF_IMAGE_SOLID:纯色图像
  • TTF_IMAGE_SHADED:带阴影图像
  • TTF_IMAGE_BLENDED:alpha 混合图像
  • TTF_IMAGE_SDF:SDF 图像

7. 属性常量(PROP)

  • TTF_PROP_FONT_CREATE_SIZE_FLOAT:字体创建时的字号属性
  • TTF_PROP_FONT_CREATE_DPI_NUMBER:字体创建时的 DPI 属性
  • TTF_PROP_RENDERER_TEXT_ENGINE_ATLAS_SIZE:渲染引擎纹理图集尺寸
  • TTF_PROP_GPU_TEXT_ENGINE_DEVICE:GPU 引擎的设备指针属性

八、工具函数

  • TTF_StringToTag:将字符串转换为 OpenType 标签
  • TTF_TagToString:将 OpenType 标签转换为字符串
  • UNICODE_BOM_NATIVE:本地字节序的 Unicode BOM 常量

FreeBASIC 示例代码

' 引入 SDL 及 SDL_ttf 相关声明(需链接 SDL3 和 SDL3_ttf 库)
#Include "SDL.bi"
#Include "SDL_ttf.bi"

' 补充关键类型/宏声明(FreeBASIC 绑定可能缺失)
#Define TTF_STYLE_BOLD 1
#Define TTF_STYLE_ITALIC 2
#Define TTF_HINTING_NORMAL 2

' 检查 SDL_ttf 版本
Sub CheckTTFVersion()
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "【检查 SDL_ttf 版本】")

    Dim As SDL_version ver
    TTF_Version(@ver)
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "SDL_ttf 版本:%d.%d.%d", ver.major, ver.minor, ver.patch)

    ' 编译期版本检查
    #If SDL_TTF_VERSION_ATLEAST(3, 0, 0)
        SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "✓ 满足 SDL_ttf 3.0.0 最低版本要求")
    #Else
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "✗ 不满足 SDL_ttf 3.0.0 最低版本要求")
    #EndIf

    ' 打印 FreeType 和 HarfBuzz 版本
    Dim As SDL_version ftVer, hbVer
    TTF_GetFreeTypeVersion(@ftVer)
    TTF_GetHarfBuzzVersion(@hbVer)
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "FreeType 版本:%d.%d.%d", ftVer.major, ftVer.minor, ftVer.patch)
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "HarfBuzz 版本:%d.%d.%d", hbVer.major, hbVer.minor, hbVer.patch)
End Sub

' 基础文本渲染示例(Surface 模式)
Sub BasicTextRenderExample(ByVal fontPath As ZString Ptr)
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, vbCrLf & "【基础文本渲染示例】")

    ' 1. 加载字体(字号 24)
    Dim As TTF_Font Ptr font = TTF_OpenFont(fontPath, 24)
    If (font = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "加载字体失败:%s", TTF_GetError())
        Exit Sub
    End If

    ' 2. 设置字体样式(粗体+斜体)
    TTF_SetFontStyle(font, TTF_STYLE_BOLD Or TTF_STYLE_ITALIC)
    TTF_SetFontHinting(font, TTF_HINTING_NORMAL)  ' 开启常规提示

    ' 3. 查询字体属性
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "字体家族:%s", TTF_GetFontFamilyName(font))
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "字体高度:%d 像素", TTF_GetFontHeight(font))
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "行间距:%d 像素", TTF_GetFontLineSkip(font))
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "是否等宽:%s", IIf(TTF_FontIsFixedWidth(font), "是", "否"))

    ' 4. 检查是否包含中文字形
    Dim As Uint32 chineseChar = &H4E2D  ' "中" 字的 Unicode 编码
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "是否包含 '中' 字形:%s", _
        IIf(TTF_FontHasGlyph(font, chineseChar), "是", "否"))

    ' 5. 渲染文本(Blended 模式,高质量抗锯齿)
    Dim As SDL_Color textColor = {255, 255, 255, 255}  ' 白色
    Dim As SDL_Surface Ptr textSurface = TTF_RenderText_Blended(font, "SDL_ttf 文本渲染示例", textColor)
    If (textSurface = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "渲染文本失败:%s", TTF_GetError())
        TTF_CloseFont(font)
        Exit Sub
    End If

    ' 6. 打印文本尺寸
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "文本尺寸:%dx%d 像素", textSurface->w, textSurface->h)

    ' 7. 保存渲染结果为 PNG(需链接 SDL_image)
    #If defined(SDL_IMAGE)
        If (IMG_SavePNG(textSurface, "text_render.png") = SDL_TRUE) Then
            SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "渲染结果已保存为 text_render.png")
        End If
    #EndIf

    ' 8. 释放资源
    SDL_DestroySurface(textSurface)
    TTF_CloseFont(font)
End Sub

' 高级文本引擎示例(Renderer 模式)
Sub AdvancedTextEngineExample(ByVal fontPath As ZString Ptr)
    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, vbCrLf & "【高级文本引擎示例】")

    ' 1. 创建窗口和渲染器
    Dim As SDL_Window Ptr window = SDL_CreateWindow( _
        "SDL_ttf 高级渲染示例", _
        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, _
        800, 600, _
        SDL_WINDOW_SHOWN _
    )
    If (window = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "创建窗口失败:%s", SDL_GetError())
        Exit Sub
    End If

    Dim As SDL_Renderer Ptr renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED Or SDL_RENDERER_PRESENTVSYNC)
    If (renderer = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "创建渲染器失败:%s", SDL_GetError())
        SDL_DestroyWindow(window)
        Exit Sub
    End If

    ' 2. 创建 Renderer 文本引擎
    Dim As TTF_TextEngine Ptr textEngine = TTF_CreateRendererTextEngine(renderer)
    If (textEngine = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "创建文本引擎失败:%s", TTF_GetError())
        SDL_DestroyRenderer(renderer)
        SDL_DestroyWindow(window)
        Exit Sub
    End If

    ' 3. 加载字体并创建文本对象
    Dim As TTF_Font Ptr font = TTF_OpenFont(fontPath, 32)
    If (font = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "加载字体失败:%s", TTF_GetError())
        TTF_DestroyRendererTextEngine(textEngine)
        SDL_DestroyRenderer(renderer)
        SDL_DestroyWindow(window)
        Exit Sub
    End If

    Dim As TTF_Text Ptr textObj = TTF_CreateText(font, "SDL_ttf 高级文本引擎示例")
    If (textObj = NULL) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "创建文本对象失败:%s", TTF_GetError())
        TTF_CloseFont(font)
        TTF_DestroyRendererTextEngine(textEngine)
        SDL_DestroyRenderer(renderer)
        SDL_DestroyWindow(window)
        Exit Sub
    End If

    ' 4. 设置文本属性
    TTF_SetTextColor(textObj, (SDL_Color){0, 255, 255, 255})  ' 青色
    TTF_SetTextPosition(textObj, 50, 50)  ' 渲染位置 (50,50)
    TTF_SetTextEngine(textObj, textEngine)  ' 绑定文本引擎

    ' 5. 渲染循环
    Dim As SDL_bool running = SDL_TRUE
    Dim As SDL_Event evt
    While (running)
        ' 事件处理
        While (SDL_PollEvent(@evt))
            If (evt.type = SDL_QUIT) Then
                running = SDL_FALSE
            End If
        Wend

        ' 清屏(黑色背景)
        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255)
        SDL_RenderClear(renderer)

        ' 渲染文本
        TTF_DrawRendererText(textObj)

        ' 刷新屏幕
        SDL_RenderPresent(renderer)
    Wend

    ' 6. 释放资源
    TTF_DestroyText(textObj)
    TTF_CloseFont(font)
    TTF_DestroyRendererTextEngine(textEngine)
    SDL_DestroyRenderer(renderer)
    SDL_DestroyWindow(window)
End Sub

' 主程序
Sub Main()
    ' 初始化 SDL 视频子系统
    If (SDL_Init(SDL_INIT_VIDEO) < 0) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL 初始化失败:%s", SDL_GetError())
        Exit Sub
    End If

    ' 初始化 SDL_ttf
    If (TTF_Init() = -1) Then
        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_ttf 初始化失败:%s", TTF_GetError())
        SDL_Quit()
        Exit Sub
    End If

    ' 字体文件路径(替换为实际的字体文件,如 simsun.ttf、arial.ttf)
    Dim As ZString Ptr fontPath = StrPtr("simsun.ttf")

    ' 运行示例
    CheckTTFVersion()
    BasicTextRenderExample(fontPath)
    AdvancedTextEngineExample(fontPath)

    ' 清理资源
    TTF_Quit()
    SDL_Quit()

    SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, vbCrLf & "程序正常退出")
End Sub

' 运行主程序
Main()

核心知识点补充

  1. SDL_ttf 初始化关键

    • 必须先调用 SDL_Init(SDL_INIT_VIDEO) 初始化视频子系统,再调用 TTF_Init()
    • TTF_Init() 内部会加载 FreeType(字体渲染)和 HarfBuzz(文本排版),需确保链接这两个库;
    • 程序退出前必须调用 TTF_Quit(),否则会导致内存泄漏。
  2. 字体加载与管理

    • 支持 TrueType (.ttf)、OpenType (.otf)、WOFF 等主流字体格式;
    • TTF_OpenFontIO 支持从内存流加载字体(适合嵌入资源的游戏/应用);
    • 多语言文本需使用回退字体(TTF_AddFallbackFont),避免部分字形缺失;
    • 字体对象使用后必须调用 TTF_CloseFont 释放,否则会泄漏资源。
  3. 文本渲染模式选择

    • Solid 模式:高性能、无抗锯齿,适合实时更新的文本(如游戏分数);
    • Shaded 模式:带阴影、有抗锯齿,性能中等,适合静态文本;
    • Blended 模式:Alpha 混合、高质量抗锯齿,性能较低,适合UI文本;
    • LCD 模式:针对 LCD 屏幕优化,清晰度最高,仅支持部分字体;
    • 文本引擎模式:硬件加速渲染,适合大量/动态文本(如编辑器、聊天框)。
  4. 多语言排版要点

    • 支持 RTL(从右到左)、TTB(竖排)等排版方向,适配阿拉伯语、日语等;
    • 中文/日文/韩文等CJK文字需使用支持对应字形的字体;
    • TTF_SetFontScript 可指定文字脚本,优化排版规则。
  5. 跨平台注意事项

    • Windows 系统可直接使用系统字体(如 simsun.ttf、microsoftyahei.ttf);
    • Linux 系统需确保安装字体文件,或打包字体到应用目录;
    • macOS 系统字体路径为 /System/Library/Fonts/,如 Arial.ttf;
    • 移动平台需将字体文件放入 assets 目录,使用绝对路径加载。

总结

  1. 核心优势

    • 无缝衔接 SDL 核心库,渲染的文本可直接用于 SDL 窗口/纹理;
    • 支持多渲染模式(CPU/Surface、2D Renderer、3D GPU),兼顾性能与质量;
    • 完整的字体属性控制(样式、字重、间距、描边等),满足各类UI需求;
    • 支持多语言排版(RTL/TTB、CJK字形、回退字体),适配全球市场;
    • 基于成熟的 FreeType/HarfBuzz 库,渲染质量有保障。
  2. 使用建议

    • 静态文本优先使用 Blended 模式,动态文本优先使用 Solid 模式;
    • 大量文本渲染优先使用文本引擎(TextEngine),利用硬件加速;
    • 多语言应用务必添加回退字体,避免字形缺失;
    • 高清显示场景使用 LCD 模式或 SDF 渲染,提升文字清晰度;
    • 字体文件建议打包到应用目录,避免依赖系统字体。
  3. 关键点回顾

    • SDL_ttf 是 SDL 的字体渲染扩展库,核心依赖 FreeType 和 HarfBuzz;
    • TTF_Init()/TTF_Quit() 是必选的初始化/清理接口;
    • TTF_Font 是字体对象核心,支持样式、字重、间距等属性配置;
    • 文本渲染分基础模式(Solid/Shaded/Blended)和高级引擎模式(Surface/Renderer/GPU);
    • 多语言排版需关注文本方向(LTR/RTL)、回退字体和字形检查。

评论一下?

OωO
取消