Skip to content

Commit f16ae21

Browse files
committed
upgrade vendored harfbuzz to 8.5.0,
- fix cmake setup so that the optional freetype symbols can actually be used in our vendored harfbuzz, - support Windows- and Apple-specific harfbuzz backends, - minor update to vendored freetype along the way. Reference issue: #532
1 parent b0f8f31 commit f16ae21

File tree

6 files changed

+62
-18
lines changed

6 files changed

+62
-18
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[submodule "external/harfbuzz"]
66
path = external/harfbuzz
77
url = https://github.com/libsdl-org/harfbuzz.git
8-
branch = 8.1.1-SDL
8+
branch = 8.5.0-SDL
99
[submodule "external/plutosvg"]
1010
path = external/plutosvg
1111
url = https://github.com/libsdl-org/plutosvg.git

CMakeLists.txt

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,15 +242,35 @@ if(SDLTTF_HARFBUZZ)
242242
set(harfbuzz_include_directories)
243243
if(SDLTTF_HARFBUZZ_VENDORED)
244244
message(STATUS "${PROJECT_NAME}: Using vendored harfbuzz library")
245+
# HB_BUILD_SUBSET variable is used by harfbuzz
246+
set(HB_BUILD_SUBSET OFF CACHE BOOL "build harfbuzz-subset" FORCE)
245247
# HB_BUILD_UTILS variable is used by harfbuzz
246248
set(HB_BUILD_UTILS OFF CACHE BOOL "harfbuzz build utils" FORCE)
247249
# SKIP_INSTALL_LIBRARIES variable is used by harfbuzz
248250
set(SKIP_INSTALL_LIBRARIES ON CACHE BOOL "harfbuzz install option" FORCE)
249251
# HB_HAVE_FREETYPE variable is used by harfbuzz
250252
set(HB_HAVE_FREETYPE ${SDLTTF_FREETYPE} CACHE BOOL "harfbuzz freetype helpers" FORCE)
253+
# target-specific harfbuzz backends :
254+
if(APPLE)
255+
# Minimum version for $<LINK_LIBRARY:feature,library-list>
256+
cmake_minimum_required(VERSION 3.24)
257+
# HB_HAVE_CORETEXT variable is used by harfbuzz
258+
set(HB_HAVE_CORETEXT ON CACHE BOOL "harfbuzz coretext backend" FORCE)
259+
endif()
260+
if(WIN32)
261+
# HB_HAVE_UNISCRIBE variable is used by harfbuzz
262+
set(HB_HAVE_UNISCRIBE ON CACHE BOOL "harfbuzz uniscribe backend" FORCE)
263+
# HB_HAVE_GDI variable is used by harfbuzz
264+
set(HB_HAVE_GDI ON CACHE BOOL "harfbuzz windows backend" FORCE)
265+
endif()
266+
## HACK: HACK: These fail detection, we rely on our own vendored FreeType having them ##
267+
set(HAVE_FT_GET_VAR_BLEND_COORDINATES 1 CACHE BOOL "FT_Get_Var_Blend_Coordinates" FORCE)
268+
set(HAVE_FT_SET_VAR_BLEND_COORDINATES 1 CACHE BOOL "FT_Set_Var_Blend_Coordinates" FORCE)
269+
set(HAVE_FT_DONE_MM_VAR 1 CACHE BOOL "FT_Done_MM_Var" FORCE)
270+
set(HAVE_FT_GET_TRANSFORM 1 CACHE BOOL "FT_Get_Transform" FORCE)
251271
sdl_check_project_in_subfolder(external/harfbuzz harfbuzz SDLTTF_VENDORED)
252272
add_subdirectory(external/harfbuzz EXCLUDE_FROM_ALL)
253-
# harfbuzz is a c++ project, enable c++ here to ensure linking to the c++ standard library
273+
# harfbuzz is a c++ project, enable c++ here to ensure linking to the c++ standard library.
254274
enable_language(CXX)
255275
if(NOT TARGET harfbuzz::harfbuzz)
256276
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)
@@ -261,9 +281,21 @@ if(SDLTTF_HARFBUZZ)
261281
else()
262282
set(harfbuzz_sources $<TARGET_OBJECTS:harfbuzz::harfbuzz>)
263283
set(harfbuzz_include_directories $<TARGET_PROPERTY:harfbuzz::harfbuzz,INTERFACE_INCLUDE_DIRECTORIES>)
264-
if(NOT MSVC)
284+
if(WIN32)
285+
# for uniscribe and gdi backends :
286+
list(APPEND harfbuzz_link_libraries usp10 gdi32 rpcrt4)
287+
list(APPEND PC_LIBS -lusp10 -lgdi32 -lrpcrt4)
288+
elseif(APPLE)
289+
# for coretext backend :
290+
list(APPEND harfbuzz_link_libraries "$<LINK_LIBRARY:FRAMEWORK,CoreText>")
291+
list(APPEND harfbuzz_link_libraries "$<LINK_LIBRARY:FRAMEWORK,CoreGraphics>")
292+
list(APPEND harfbuzz_link_libraries "$<LINK_LIBRARY:FRAMEWORK,CoreFoundation>")
293+
list(APPEND PC_LIBS "-Wl,-framework,CoreText")
294+
list(APPEND PC_LIBS "-Wl,-framework,CoreGraphics")
295+
list(APPEND PC_LIBS "-Wl,-framework,CoreFoundation")
296+
else()
265297
find_package(Threads)
266-
set(harfbuzz_link_librarise Threads::Threads)
298+
set(harfbuzz_link_libraries Threads::Threads)
267299
endif()
268300
endif()
269301
else()

VisualC/SDL_ttf.vcxproj

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@
8888
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
8989
</PropertyGroup>
9090
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
91-
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
91+
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
9292
<LibraryPath>$(SolutionDir)..\..\SDL\VisualC\$(PlatformName)\$(Configuration);$(LibraryPath)</LibraryPath>
9393
</PropertyGroup>
9494
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
95-
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
95+
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
9696
<LibraryPath>$(SolutionDir)..\..\SDL\VisualC\$(PlatformName)\$(Configuration);$(LibraryPath)</LibraryPath>
9797
</PropertyGroup>
9898
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
99-
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
99+
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
100100
<LibraryPath>$(SolutionDir)..\..\SDL\VisualC\$(PlatformName)\$(Configuration);$(LibraryPath)</LibraryPath>
101101
</PropertyGroup>
102102
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
103-
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
103+
<IncludePath>$(ProjectDir)..\include;$(ProjectDir)..\external\freetype\include;$(ProjectDir)..\external\harfbuzz;$(ProjectDir)..\external\harfbuzz\src;$(ProjectDir)..\external\plutosvg\source;$(ProjectDir)..\external\plutovg\include;$(ProjectDir)..\..\SDL\include;$(IncludePath)</IncludePath>
104104
<LibraryPath>$(SolutionDir)..\..\SDL\VisualC\$(PlatformName)\$(Configuration);$(LibraryPath)</LibraryPath>
105105
</PropertyGroup>
106106
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -115,7 +115,7 @@
115115
</Midl>
116116
<ClCompile>
117117
<Optimization>Disabled</Optimization>
118-
<PreprocessorDefinitions>DLL_EXPORT;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118+
<PreprocessorDefinitions>DLL_EXPORT;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;HAVE_CONFIG_H;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
119119
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
120120
<WarningLevel>Level3</WarningLevel>
121121
<DebugInformationFormat>OldStyle</DebugInformationFormat>
@@ -125,7 +125,7 @@
125125
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
126126
</ResourceCompile>
127127
<Link>
128-
<AdditionalDependencies>SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
128+
<AdditionalDependencies>usp10.lib;gdi32.lib;rpcrt4.lib;SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
129129
<AdditionalLibraryDirectories>external\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
130130
<GenerateDebugInformation>true</GenerateDebugInformation>
131131
<SubSystem>Windows</SubSystem>
@@ -143,7 +143,7 @@
143143
</Midl>
144144
<ClCompile>
145145
<Optimization>Disabled</Optimization>
146-
<PreprocessorDefinitions>DLL_EXPORT;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
146+
<PreprocessorDefinitions>DLL_EXPORT;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;HAVE_CONFIG_H;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
147147
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
148148
<WarningLevel>Level3</WarningLevel>
149149
<DebugInformationFormat>OldStyle</DebugInformationFormat>
@@ -152,7 +152,7 @@
152152
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
153153
</ResourceCompile>
154154
<Link>
155-
<AdditionalDependencies>SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
155+
<AdditionalDependencies>usp10.lib;gdi32.lib;rpcrt4.lib;SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
156156
<AdditionalLibraryDirectories>external\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
157157
<GenerateDebugInformation>true</GenerateDebugInformation>
158158
<SubSystem>Windows</SubSystem>
@@ -169,7 +169,7 @@
169169
</HeaderFileName>
170170
</Midl>
171171
<ClCompile>
172-
<PreprocessorDefinitions>DLL_EXPORT;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
172+
<PreprocessorDefinitions>DLL_EXPORT;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;HAVE_CONFIG_H;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
173173
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
174174
<WarningLevel>Level3</WarningLevel>
175175
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
@@ -179,7 +179,7 @@
179179
</ResourceCompile>
180180
<Link>
181181
<SubSystem>Windows</SubSystem>
182-
<AdditionalDependencies>SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
182+
<AdditionalDependencies>usp10.lib;gdi32.lib;rpcrt4.lib;SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
183183
<AdditionalLibraryDirectories>external\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
184184
<EnableCOMDATFolding>true</EnableCOMDATFolding>
185185
<OptimizeReferences>true</OptimizeReferences>
@@ -196,7 +196,7 @@
196196
</HeaderFileName>
197197
</Midl>
198198
<ClCompile>
199-
<PreprocessorDefinitions>DLL_EXPORT;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
199+
<PreprocessorDefinitions>DLL_EXPORT;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;TTF_USE_HARFBUZZ=1;HAVE_CONFIG_H;FT_PUBLIC_FUNCTION_ATTRIBUTE=;FT_CONFIG_OPTION_USE_HARFBUZZ;FT2_BUILD_LIBRARY;HAVE_FREETYPE;TTF_USE_PLUTOSVG=1;PLUTOSVG_HAS_FREETYPE;PLUTOSVG_BUILD_STATIC;PLUTOVG_BUILD_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
200200
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
201201
<WarningLevel>Level3</WarningLevel>
202202
</ClCompile>
@@ -205,7 +205,7 @@
205205
</ResourceCompile>
206206
<Link>
207207
<SubSystem>Windows</SubSystem>
208-
<AdditionalDependencies>SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
208+
<AdditionalDependencies>usp10.lib;gdi32.lib;rpcrt4.lib;SDL3.lib;%(AdditionalDependencies)</AdditionalDependencies>
209209
<AdditionalLibraryDirectories>external\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
210210
<EnableCOMDATFolding>true</EnableCOMDATFolding>
211211
<OptimizeReferences>true</OptimizeReferences>

Xcode/SDL_ttf.xcodeproj/project.pbxproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@
109109
F384BCD4261EC2BE0028A248 /* type42.c in Sources */ = {isa = PBXBuildFile; fileRef = F384BCD3261EC2BE0028A248 /* type42.c */; };
110110
F384BCDF261EC2CF0028A248 /* winfnt.c in Sources */ = {isa = PBXBuildFile; fileRef = F384BCDE261EC2CF0028A248 /* winfnt.c */; };
111111
F384BCF2261EC5130028A248 /* ftcache.c in Sources */ = {isa = PBXBuildFile; fileRef = F384BCF1261EC5130028A248 /* ftcache.c */; };
112+
F3CD08932D8E254E00B1F9D2 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3CD08902D8E254E00B1F9D2 /* CoreText.framework */; };
113+
F3CD08942D8E254E00B1F9D2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3CD08912D8E254E00B1F9D2 /* CoreFoundation.framework */; };
114+
F3CD08952D8E254E00B1F9D2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3CD08922D8E254E00B1F9D2 /* CoreGraphics.framework */; };
112115
F3F7BDF72CB6FD6700C984AF /* SDL_hashtable.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7BDF12CB6FD6700C984AF /* SDL_hashtable.h */; };
113116
F3F7BDF82CB6FD6700C984AF /* stb_rect_pack.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7BDF62CB6FD6700C984AF /* stb_rect_pack.h */; };
114117
F3F7BDF92CB6FD6700C984AF /* SDL_renderer_textengine.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F7BDF32CB6FD6700C984AF /* SDL_renderer_textengine.c */; };
@@ -205,6 +208,9 @@
205208
F384BCD3261EC2BE0028A248 /* type42.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = type42.c; path = ../external/freetype/src/type42/type42.c; sourceTree = "<group>"; };
206209
F384BCDE261EC2CF0028A248 /* winfnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = winfnt.c; path = ../external/freetype/src/winfonts/winfnt.c; sourceTree = "<group>"; };
207210
F384BCF1261EC5130028A248 /* ftcache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ftcache.c; path = ../external/freetype/src/cache/ftcache.c; sourceTree = "<group>"; };
211+
F3CD08902D8E254E00B1F9D2 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
212+
F3CD08912D8E254E00B1F9D2 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
213+
F3CD08922D8E254E00B1F9D2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
208214
F3E1F8752A79462A00AC76D3 /* config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = config.xcconfig; sourceTree = "<group>"; };
209215
F3F7BDF12CB6FD6700C984AF /* SDL_hashtable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hashtable.h; sourceTree = "<group>"; };
210216
F3F7BDF22CB6FD6700C984AF /* SDL_hashtable.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hashtable.c; sourceTree = "<group>"; };
@@ -220,7 +226,10 @@
220226
isa = PBXFrameworksBuildPhase;
221227
buildActionMask = 2147483647;
222228
files = (
229+
F3CD08952D8E254E00B1F9D2 /* CoreGraphics.framework in Frameworks */,
230+
F3CD08932D8E254E00B1F9D2 /* CoreText.framework in Frameworks */,
223231
F3412A342D4C8DBF00D6C2B7 /* SDL3.framework in Frameworks */,
232+
F3CD08942D8E254E00B1F9D2 /* CoreFoundation.framework in Frameworks */,
224233
);
225234
runOnlyForDeploymentPostprocessing = 0;
226235
};
@@ -290,6 +299,9 @@
290299
BE48FD8107AFA26B00BB41DA /* Frameworks */ = {
291300
isa = PBXGroup;
292301
children = (
302+
F3CD08912D8E254E00B1F9D2 /* CoreFoundation.framework */,
303+
F3CD08922D8E254E00B1F9D2 /* CoreGraphics.framework */,
304+
F3CD08902D8E254E00B1F9D2 /* CoreText.framework */,
293305
F3412A332D4C8DBF00D6C2B7 /* SDL3.framework */,
294306
);
295307
name = Frameworks;

external/freetype

external/harfbuzz

Submodule harfbuzz updated 1206 files

0 commit comments

Comments
 (0)