Use system fonts as fallback and improve system font handling.
Add support for font weight and stretch selection when using system fonts. Add function to get system fallback font from a font name, style, text, and language code. Implement system font support for Android. Use system fonts as a last resort fallback.
This commit is contained in:
parent
015dc492de
commit
ecec415988
51 changed files with 2756 additions and 150 deletions
|
|
@ -1,7 +1,7 @@
|
|||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ./generate-wrapper.py 0.3 on 2022-07-29 05:40:07
|
||||
// flags: ./generate-wrapper.py --include /usr/include/fontconfig/fontconfig.h --sys-include <fontconfig/fontconfig.h> --soname libfontconfig.so --init-name fontconfig --output-header fontconfig-so_wrap.h --output-implementation fontconfig-so_wrap.c --omit-prefix FcCharSet
|
||||
// generated by ./generate-wrapper.py 0.3 on 2022-11-22 10:28:00
|
||||
// flags: ./generate-wrapper.py --include /usr/include/fontconfig/fontconfig.h --sys-include <fontconfig/fontconfig.h> --soname libfontconfig.so --init-name fontconfig --output-header fontconfig-so_wrap.h --output-implementation fontconfig-so_wrap.c --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
@ -18,6 +18,8 @@
|
|||
#define FcDirCacheValid FcDirCacheValid_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheClean FcDirCacheClean_dylibloader_orig_fontconfig
|
||||
#define FcCacheCreateTagFile FcCacheCreateTagFile_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheCreateUUID FcDirCacheCreateUUID_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheDeleteUUID FcDirCacheDeleteUUID_dylibloader_orig_fontconfig
|
||||
#define FcConfigHome FcConfigHome_dylibloader_orig_fontconfig
|
||||
#define FcConfigEnableHome FcConfigEnableHome_dylibloader_orig_fontconfig
|
||||
#define FcConfigFilename FcConfigFilename_dylibloader_orig_fontconfig
|
||||
|
|
@ -44,6 +46,26 @@
|
|||
#define FcConfigSubstitute FcConfigSubstitute_dylibloader_orig_fontconfig
|
||||
#define FcConfigGetSysRoot FcConfigGetSysRoot_dylibloader_orig_fontconfig
|
||||
#define FcConfigSetSysRoot FcConfigSetSysRoot_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterInit FcConfigFileInfoIterInit_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterNext FcConfigFileInfoIterNext_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterGet FcConfigFileInfoIterGet_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCreate FcCharSetCreate_dylibloader_orig_fontconfig
|
||||
#define FcCharSetNew FcCharSetNew_dylibloader_orig_fontconfig
|
||||
#define FcCharSetDestroy FcCharSetDestroy_dylibloader_orig_fontconfig
|
||||
#define FcCharSetAddChar FcCharSetAddChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetDelChar FcCharSetDelChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCopy FcCharSetCopy_dylibloader_orig_fontconfig
|
||||
#define FcCharSetEqual FcCharSetEqual_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIntersect FcCharSetIntersect_dylibloader_orig_fontconfig
|
||||
#define FcCharSetUnion FcCharSetUnion_dylibloader_orig_fontconfig
|
||||
#define FcCharSetSubtract FcCharSetSubtract_dylibloader_orig_fontconfig
|
||||
#define FcCharSetMerge FcCharSetMerge_dylibloader_orig_fontconfig
|
||||
#define FcCharSetHasChar FcCharSetHasChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCount FcCharSetCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIntersectCount FcCharSetIntersectCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetSubtractCount FcCharSetSubtractCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIsSubset FcCharSetIsSubset_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCoverage FcCharSetCoverage_dylibloader_orig_fontconfig
|
||||
#define FcValuePrint FcValuePrint_dylibloader_orig_fontconfig
|
||||
#define FcPatternPrint FcPatternPrint_dylibloader_orig_fontconfig
|
||||
#define FcFontSetPrint FcFontSetPrint_dylibloader_orig_fontconfig
|
||||
|
|
@ -59,6 +81,7 @@
|
|||
#define FcDirCacheLoadFile FcDirCacheLoadFile_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheUnload FcDirCacheUnload_dylibloader_orig_fontconfig
|
||||
#define FcFreeTypeQuery FcFreeTypeQuery_dylibloader_orig_fontconfig
|
||||
#define FcFreeTypeQueryAll FcFreeTypeQueryAll_dylibloader_orig_fontconfig
|
||||
#define FcFontSetCreate FcFontSetCreate_dylibloader_orig_fontconfig
|
||||
#define FcFontSetDestroy FcFontSetDestroy_dylibloader_orig_fontconfig
|
||||
#define FcFontSetAdd FcFontSetAdd_dylibloader_orig_fontconfig
|
||||
|
|
@ -129,6 +152,7 @@
|
|||
#define FcValueEqual FcValueEqual_dylibloader_orig_fontconfig
|
||||
#define FcValueSave FcValueSave_dylibloader_orig_fontconfig
|
||||
#define FcPatternDestroy FcPatternDestroy_dylibloader_orig_fontconfig
|
||||
#define FcPatternObjectCount FcPatternObjectCount_dylibloader_orig_fontconfig
|
||||
#define FcPatternEqual FcPatternEqual_dylibloader_orig_fontconfig
|
||||
#define FcPatternEqualSubset FcPatternEqualSubset_dylibloader_orig_fontconfig
|
||||
#define FcPatternHash FcPatternHash_dylibloader_orig_fontconfig
|
||||
|
|
@ -162,8 +186,18 @@
|
|||
#define FcRangeDestroy FcRangeDestroy_dylibloader_orig_fontconfig
|
||||
#define FcRangeCopy FcRangeCopy_dylibloader_orig_fontconfig
|
||||
#define FcRangeGetDouble FcRangeGetDouble_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterStart FcPatternIterStart_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterNext FcPatternIterNext_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterEqual FcPatternIterEqual_dylibloader_orig_fontconfig
|
||||
#define FcPatternFindIter FcPatternFindIter_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterIsValid FcPatternIterIsValid_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterGetObject FcPatternIterGetObject_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterValueCount FcPatternIterValueCount_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterGetValue FcPatternIterGetValue_dylibloader_orig_fontconfig
|
||||
#define FcWeightFromOpenType FcWeightFromOpenType_dylibloader_orig_fontconfig
|
||||
#define FcWeightFromOpenTypeDouble FcWeightFromOpenTypeDouble_dylibloader_orig_fontconfig
|
||||
#define FcWeightToOpenType FcWeightToOpenType_dylibloader_orig_fontconfig
|
||||
#define FcWeightToOpenTypeDouble FcWeightToOpenTypeDouble_dylibloader_orig_fontconfig
|
||||
#define FcStrCopy FcStrCopy_dylibloader_orig_fontconfig
|
||||
#define FcStrCopyFilename FcStrCopyFilename_dylibloader_orig_fontconfig
|
||||
#define FcStrPlus FcStrPlus_dylibloader_orig_fontconfig
|
||||
|
|
@ -207,6 +241,8 @@
|
|||
#undef FcDirCacheValid
|
||||
#undef FcDirCacheClean
|
||||
#undef FcCacheCreateTagFile
|
||||
#undef FcDirCacheCreateUUID
|
||||
#undef FcDirCacheDeleteUUID
|
||||
#undef FcConfigHome
|
||||
#undef FcConfigEnableHome
|
||||
#undef FcConfigFilename
|
||||
|
|
@ -233,6 +269,26 @@
|
|||
#undef FcConfigSubstitute
|
||||
#undef FcConfigGetSysRoot
|
||||
#undef FcConfigSetSysRoot
|
||||
#undef FcConfigFileInfoIterInit
|
||||
#undef FcConfigFileInfoIterNext
|
||||
#undef FcConfigFileInfoIterGet
|
||||
#undef FcCharSetCreate
|
||||
#undef FcCharSetNew
|
||||
#undef FcCharSetDestroy
|
||||
#undef FcCharSetAddChar
|
||||
#undef FcCharSetDelChar
|
||||
#undef FcCharSetCopy
|
||||
#undef FcCharSetEqual
|
||||
#undef FcCharSetIntersect
|
||||
#undef FcCharSetUnion
|
||||
#undef FcCharSetSubtract
|
||||
#undef FcCharSetMerge
|
||||
#undef FcCharSetHasChar
|
||||
#undef FcCharSetCount
|
||||
#undef FcCharSetIntersectCount
|
||||
#undef FcCharSetSubtractCount
|
||||
#undef FcCharSetIsSubset
|
||||
#undef FcCharSetCoverage
|
||||
#undef FcValuePrint
|
||||
#undef FcPatternPrint
|
||||
#undef FcFontSetPrint
|
||||
|
|
@ -248,6 +304,7 @@
|
|||
#undef FcDirCacheLoadFile
|
||||
#undef FcDirCacheUnload
|
||||
#undef FcFreeTypeQuery
|
||||
#undef FcFreeTypeQueryAll
|
||||
#undef FcFontSetCreate
|
||||
#undef FcFontSetDestroy
|
||||
#undef FcFontSetAdd
|
||||
|
|
@ -318,6 +375,7 @@
|
|||
#undef FcValueEqual
|
||||
#undef FcValueSave
|
||||
#undef FcPatternDestroy
|
||||
#undef FcPatternObjectCount
|
||||
#undef FcPatternEqual
|
||||
#undef FcPatternEqualSubset
|
||||
#undef FcPatternHash
|
||||
|
|
@ -351,8 +409,18 @@
|
|||
#undef FcRangeDestroy
|
||||
#undef FcRangeCopy
|
||||
#undef FcRangeGetDouble
|
||||
#undef FcPatternIterStart
|
||||
#undef FcPatternIterNext
|
||||
#undef FcPatternIterEqual
|
||||
#undef FcPatternFindIter
|
||||
#undef FcPatternIterIsValid
|
||||
#undef FcPatternIterGetObject
|
||||
#undef FcPatternIterValueCount
|
||||
#undef FcPatternIterGetValue
|
||||
#undef FcWeightFromOpenType
|
||||
#undef FcWeightFromOpenTypeDouble
|
||||
#undef FcWeightToOpenType
|
||||
#undef FcWeightToOpenTypeDouble
|
||||
#undef FcStrCopy
|
||||
#undef FcStrCopyFilename
|
||||
#undef FcStrPlus
|
||||
|
|
@ -397,6 +465,8 @@ FcBool (*FcDirCacheUnlink_dylibloader_wrapper_fontconfig)(const FcChar8*, FcConf
|
|||
FcBool (*FcDirCacheValid_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
FcBool (*FcDirCacheClean_dylibloader_wrapper_fontconfig)(const FcChar8*, FcBool);
|
||||
void (*FcCacheCreateTagFile_dylibloader_wrapper_fontconfig)(const FcConfig*);
|
||||
FcBool (*FcDirCacheCreateUUID_dylibloader_wrapper_fontconfig)( FcChar8*, FcBool, FcConfig*);
|
||||
FcBool (*FcDirCacheDeleteUUID_dylibloader_wrapper_fontconfig)(const FcChar8*, FcConfig*);
|
||||
FcChar8* (*FcConfigHome_dylibloader_wrapper_fontconfig)( void);
|
||||
FcBool (*FcConfigEnableHome_dylibloader_wrapper_fontconfig)( FcBool);
|
||||
FcChar8* (*FcConfigFilename_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
|
|
@ -423,6 +493,26 @@ FcBool (*FcConfigSubstituteWithPat_dylibloader_wrapper_fontconfig)( FcConfig*, F
|
|||
FcBool (*FcConfigSubstitute_dylibloader_wrapper_fontconfig)( FcConfig*, FcPattern*, FcMatchKind);
|
||||
const FcChar8* (*FcConfigGetSysRoot_dylibloader_wrapper_fontconfig)(const FcConfig*);
|
||||
void (*FcConfigSetSysRoot_dylibloader_wrapper_fontconfig)( FcConfig*,const FcChar8*);
|
||||
void (*FcConfigFileInfoIterInit_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*);
|
||||
FcBool (*FcConfigFileInfoIterNext_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*);
|
||||
FcBool (*FcConfigFileInfoIterGet_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*, FcChar8**, FcChar8**, FcBool*);
|
||||
FcCharSet* (*FcCharSetCreate_dylibloader_wrapper_fontconfig)( void);
|
||||
FcCharSet* (*FcCharSetNew_dylibloader_wrapper_fontconfig)( void);
|
||||
void (*FcCharSetDestroy_dylibloader_wrapper_fontconfig)( FcCharSet*);
|
||||
FcBool (*FcCharSetAddChar_dylibloader_wrapper_fontconfig)( FcCharSet*, FcChar32);
|
||||
FcBool (*FcCharSetDelChar_dylibloader_wrapper_fontconfig)( FcCharSet*, FcChar32);
|
||||
FcCharSet* (*FcCharSetCopy_dylibloader_wrapper_fontconfig)( FcCharSet*);
|
||||
FcBool (*FcCharSetEqual_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcCharSet* (*FcCharSetIntersect_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcCharSet* (*FcCharSetUnion_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcCharSet* (*FcCharSetSubtract_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcBool (*FcCharSetMerge_dylibloader_wrapper_fontconfig)( FcCharSet*,const FcCharSet*, FcBool*);
|
||||
FcBool (*FcCharSetHasChar_dylibloader_wrapper_fontconfig)(const FcCharSet*, FcChar32);
|
||||
FcChar32 (*FcCharSetCount_dylibloader_wrapper_fontconfig)(const FcCharSet*);
|
||||
FcChar32 (*FcCharSetIntersectCount_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcChar32 (*FcCharSetSubtractCount_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcBool (*FcCharSetIsSubset_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
FcChar32 (*FcCharSetCoverage_dylibloader_wrapper_fontconfig)(const FcCharSet*, FcChar32, FcChar32*);
|
||||
void (*FcValuePrint_dylibloader_wrapper_fontconfig)(const FcValue);
|
||||
void (*FcPatternPrint_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
void (*FcFontSetPrint_dylibloader_wrapper_fontconfig)(const FcFontSet*);
|
||||
|
|
@ -437,7 +527,8 @@ FcCache* (*FcDirCacheRescan_dylibloader_wrapper_fontconfig)(const FcChar8*, FcCo
|
|||
FcCache* (*FcDirCacheRead_dylibloader_wrapper_fontconfig)(const FcChar8*, FcBool, FcConfig*);
|
||||
FcCache* (*FcDirCacheLoadFile_dylibloader_wrapper_fontconfig)(const FcChar8*,struct stat*);
|
||||
void (*FcDirCacheUnload_dylibloader_wrapper_fontconfig)( FcCache*);
|
||||
FcPattern* (*FcFreeTypeQuery_dylibloader_wrapper_fontconfig)(const FcChar8*, int, FcBlanks*, int*);
|
||||
FcPattern* (*FcFreeTypeQuery_dylibloader_wrapper_fontconfig)(const FcChar8*, unsigned int, FcBlanks*, int*);
|
||||
unsigned int (*FcFreeTypeQueryAll_dylibloader_wrapper_fontconfig)(const FcChar8*, unsigned int, FcBlanks*, int*, FcFontSet*);
|
||||
FcFontSet* (*FcFontSetCreate_dylibloader_wrapper_fontconfig)( void);
|
||||
void (*FcFontSetDestroy_dylibloader_wrapper_fontconfig)( FcFontSet*);
|
||||
FcBool (*FcFontSetAdd_dylibloader_wrapper_fontconfig)( FcFontSet*, FcPattern*);
|
||||
|
|
@ -508,6 +599,7 @@ void (*FcValueDestroy_dylibloader_wrapper_fontconfig)( FcValue);
|
|||
FcBool (*FcValueEqual_dylibloader_wrapper_fontconfig)( FcValue, FcValue);
|
||||
FcValue (*FcValueSave_dylibloader_wrapper_fontconfig)( FcValue);
|
||||
void (*FcPatternDestroy_dylibloader_wrapper_fontconfig)( FcPattern*);
|
||||
int (*FcPatternObjectCount_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
FcBool (*FcPatternEqual_dylibloader_wrapper_fontconfig)(const FcPattern*,const FcPattern*);
|
||||
FcBool (*FcPatternEqualSubset_dylibloader_wrapper_fontconfig)(const FcPattern*,const FcPattern*,const FcObjectSet*);
|
||||
FcChar32 (*FcPatternHash_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
|
|
@ -541,8 +633,18 @@ FcRange* (*FcRangeCreateInteger_dylibloader_wrapper_fontconfig)( FcChar32, FcCha
|
|||
void (*FcRangeDestroy_dylibloader_wrapper_fontconfig)( FcRange*);
|
||||
FcRange* (*FcRangeCopy_dylibloader_wrapper_fontconfig)(const FcRange*);
|
||||
FcBool (*FcRangeGetDouble_dylibloader_wrapper_fontconfig)(const FcRange*, double*, double*);
|
||||
void (*FcPatternIterStart_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
FcBool (*FcPatternIterNext_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
FcBool (*FcPatternIterEqual_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*,const FcPattern*, FcPatternIter*);
|
||||
FcBool (*FcPatternFindIter_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*,const char*);
|
||||
FcBool (*FcPatternIterIsValid_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
const char* (*FcPatternIterGetObject_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
int (*FcPatternIterValueCount_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
FcResult (*FcPatternIterGetValue_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*, int, FcValue*, FcValueBinding*);
|
||||
int (*FcWeightFromOpenType_dylibloader_wrapper_fontconfig)( int);
|
||||
double (*FcWeightFromOpenTypeDouble_dylibloader_wrapper_fontconfig)( double);
|
||||
int (*FcWeightToOpenType_dylibloader_wrapper_fontconfig)( int);
|
||||
double (*FcWeightToOpenTypeDouble_dylibloader_wrapper_fontconfig)( double);
|
||||
FcChar8* (*FcStrCopy_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
FcChar8* (*FcStrCopyFilename_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
FcChar8* (*FcStrPlus_dylibloader_wrapper_fontconfig)(const FcChar8*,const FcChar8*);
|
||||
|
|
@ -687,6 +789,22 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcDirCacheCreateUUID
|
||||
*(void **) (&FcDirCacheCreateUUID_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcDirCacheCreateUUID");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcDirCacheDeleteUUID
|
||||
*(void **) (&FcDirCacheDeleteUUID_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcDirCacheDeleteUUID");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcConfigHome
|
||||
*(void **) (&FcConfigHome_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcConfigHome");
|
||||
if (verbose) {
|
||||
|
|
@ -895,6 +1013,166 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcConfigFileInfoIterInit
|
||||
*(void **) (&FcConfigFileInfoIterInit_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcConfigFileInfoIterInit");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcConfigFileInfoIterNext
|
||||
*(void **) (&FcConfigFileInfoIterNext_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcConfigFileInfoIterNext");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcConfigFileInfoIterGet
|
||||
*(void **) (&FcConfigFileInfoIterGet_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcConfigFileInfoIterGet");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetCreate
|
||||
*(void **) (&FcCharSetCreate_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetCreate");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetNew
|
||||
*(void **) (&FcCharSetNew_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetNew");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetDestroy
|
||||
*(void **) (&FcCharSetDestroy_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetDestroy");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetAddChar
|
||||
*(void **) (&FcCharSetAddChar_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetAddChar");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetDelChar
|
||||
*(void **) (&FcCharSetDelChar_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetDelChar");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetCopy
|
||||
*(void **) (&FcCharSetCopy_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetCopy");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetEqual
|
||||
*(void **) (&FcCharSetEqual_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetEqual");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetIntersect
|
||||
*(void **) (&FcCharSetIntersect_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetIntersect");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetUnion
|
||||
*(void **) (&FcCharSetUnion_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetUnion");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetSubtract
|
||||
*(void **) (&FcCharSetSubtract_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetSubtract");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetMerge
|
||||
*(void **) (&FcCharSetMerge_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetMerge");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetHasChar
|
||||
*(void **) (&FcCharSetHasChar_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetHasChar");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetCount
|
||||
*(void **) (&FcCharSetCount_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetCount");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetIntersectCount
|
||||
*(void **) (&FcCharSetIntersectCount_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetIntersectCount");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetSubtractCount
|
||||
*(void **) (&FcCharSetSubtractCount_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetSubtractCount");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetIsSubset
|
||||
*(void **) (&FcCharSetIsSubset_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetIsSubset");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcCharSetCoverage
|
||||
*(void **) (&FcCharSetCoverage_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcCharSetCoverage");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcValuePrint
|
||||
*(void **) (&FcValuePrint_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcValuePrint");
|
||||
if (verbose) {
|
||||
|
|
@ -1015,6 +1293,14 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcFreeTypeQueryAll
|
||||
*(void **) (&FcFreeTypeQueryAll_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcFreeTypeQueryAll");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcFontSetCreate
|
||||
*(void **) (&FcFontSetCreate_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcFontSetCreate");
|
||||
if (verbose) {
|
||||
|
|
@ -1575,6 +1861,14 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternObjectCount
|
||||
*(void **) (&FcPatternObjectCount_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternObjectCount");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternEqual
|
||||
*(void **) (&FcPatternEqual_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternEqual");
|
||||
if (verbose) {
|
||||
|
|
@ -1839,6 +2133,70 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterStart
|
||||
*(void **) (&FcPatternIterStart_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterStart");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterNext
|
||||
*(void **) (&FcPatternIterNext_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterNext");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterEqual
|
||||
*(void **) (&FcPatternIterEqual_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterEqual");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternFindIter
|
||||
*(void **) (&FcPatternFindIter_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternFindIter");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterIsValid
|
||||
*(void **) (&FcPatternIterIsValid_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterIsValid");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterGetObject
|
||||
*(void **) (&FcPatternIterGetObject_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterGetObject");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterValueCount
|
||||
*(void **) (&FcPatternIterValueCount_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterValueCount");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcPatternIterGetValue
|
||||
*(void **) (&FcPatternIterGetValue_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcPatternIterGetValue");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcWeightFromOpenType
|
||||
*(void **) (&FcWeightFromOpenType_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcWeightFromOpenType");
|
||||
if (verbose) {
|
||||
|
|
@ -1847,6 +2205,14 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcWeightFromOpenTypeDouble
|
||||
*(void **) (&FcWeightFromOpenTypeDouble_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcWeightFromOpenTypeDouble");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcWeightToOpenType
|
||||
*(void **) (&FcWeightToOpenType_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcWeightToOpenType");
|
||||
if (verbose) {
|
||||
|
|
@ -1855,6 +2221,14 @@ int initialize_fontconfig(int verbose) {
|
|||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcWeightToOpenTypeDouble
|
||||
*(void **) (&FcWeightToOpenTypeDouble_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcWeightToOpenTypeDouble");
|
||||
if (verbose) {
|
||||
error = dlerror();
|
||||
if (error != NULL) {
|
||||
fprintf(stderr, "%s\n", error);
|
||||
}
|
||||
}
|
||||
// FcStrCopy
|
||||
*(void **) (&FcStrCopy_dylibloader_wrapper_fontconfig) = dlsym(handle, "FcStrCopy");
|
||||
if (verbose) {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
#define DYLIBLOAD_WRAPPER_FONTCONFIG
|
||||
// This file is generated. Do not edit!
|
||||
// see https://github.com/hpvb/dynload-wrapper for details
|
||||
// generated by ./generate-wrapper.py 0.3 on 2022-07-29 05:40:07
|
||||
// flags: ./generate-wrapper.py --include /usr/include/fontconfig/fontconfig.h --sys-include <fontconfig/fontconfig.h> --soname libfontconfig.so --init-name fontconfig --output-header fontconfig-so_wrap.h --output-implementation fontconfig-so_wrap.c --omit-prefix FcCharSet
|
||||
// generated by ./generate-wrapper.py 0.3 on 2022-11-22 10:28:00
|
||||
// flags: ./generate-wrapper.py --include /usr/include/fontconfig/fontconfig.h --sys-include <fontconfig/fontconfig.h> --soname libfontconfig.so --init-name fontconfig --output-header fontconfig-so_wrap.h --output-implementation fontconfig-so_wrap.c --omit-prefix FcCharSetFirst --omit-prefix FcCharSetNext
|
||||
//
|
||||
#include <stdint.h>
|
||||
|
||||
|
|
@ -20,6 +20,8 @@
|
|||
#define FcDirCacheValid FcDirCacheValid_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheClean FcDirCacheClean_dylibloader_orig_fontconfig
|
||||
#define FcCacheCreateTagFile FcCacheCreateTagFile_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheCreateUUID FcDirCacheCreateUUID_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheDeleteUUID FcDirCacheDeleteUUID_dylibloader_orig_fontconfig
|
||||
#define FcConfigHome FcConfigHome_dylibloader_orig_fontconfig
|
||||
#define FcConfigEnableHome FcConfigEnableHome_dylibloader_orig_fontconfig
|
||||
#define FcConfigFilename FcConfigFilename_dylibloader_orig_fontconfig
|
||||
|
|
@ -46,6 +48,26 @@
|
|||
#define FcConfigSubstitute FcConfigSubstitute_dylibloader_orig_fontconfig
|
||||
#define FcConfigGetSysRoot FcConfigGetSysRoot_dylibloader_orig_fontconfig
|
||||
#define FcConfigSetSysRoot FcConfigSetSysRoot_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterInit FcConfigFileInfoIterInit_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterNext FcConfigFileInfoIterNext_dylibloader_orig_fontconfig
|
||||
#define FcConfigFileInfoIterGet FcConfigFileInfoIterGet_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCreate FcCharSetCreate_dylibloader_orig_fontconfig
|
||||
#define FcCharSetNew FcCharSetNew_dylibloader_orig_fontconfig
|
||||
#define FcCharSetDestroy FcCharSetDestroy_dylibloader_orig_fontconfig
|
||||
#define FcCharSetAddChar FcCharSetAddChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetDelChar FcCharSetDelChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCopy FcCharSetCopy_dylibloader_orig_fontconfig
|
||||
#define FcCharSetEqual FcCharSetEqual_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIntersect FcCharSetIntersect_dylibloader_orig_fontconfig
|
||||
#define FcCharSetUnion FcCharSetUnion_dylibloader_orig_fontconfig
|
||||
#define FcCharSetSubtract FcCharSetSubtract_dylibloader_orig_fontconfig
|
||||
#define FcCharSetMerge FcCharSetMerge_dylibloader_orig_fontconfig
|
||||
#define FcCharSetHasChar FcCharSetHasChar_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCount FcCharSetCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIntersectCount FcCharSetIntersectCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetSubtractCount FcCharSetSubtractCount_dylibloader_orig_fontconfig
|
||||
#define FcCharSetIsSubset FcCharSetIsSubset_dylibloader_orig_fontconfig
|
||||
#define FcCharSetCoverage FcCharSetCoverage_dylibloader_orig_fontconfig
|
||||
#define FcValuePrint FcValuePrint_dylibloader_orig_fontconfig
|
||||
#define FcPatternPrint FcPatternPrint_dylibloader_orig_fontconfig
|
||||
#define FcFontSetPrint FcFontSetPrint_dylibloader_orig_fontconfig
|
||||
|
|
@ -61,6 +83,7 @@
|
|||
#define FcDirCacheLoadFile FcDirCacheLoadFile_dylibloader_orig_fontconfig
|
||||
#define FcDirCacheUnload FcDirCacheUnload_dylibloader_orig_fontconfig
|
||||
#define FcFreeTypeQuery FcFreeTypeQuery_dylibloader_orig_fontconfig
|
||||
#define FcFreeTypeQueryAll FcFreeTypeQueryAll_dylibloader_orig_fontconfig
|
||||
#define FcFontSetCreate FcFontSetCreate_dylibloader_orig_fontconfig
|
||||
#define FcFontSetDestroy FcFontSetDestroy_dylibloader_orig_fontconfig
|
||||
#define FcFontSetAdd FcFontSetAdd_dylibloader_orig_fontconfig
|
||||
|
|
@ -131,6 +154,7 @@
|
|||
#define FcValueEqual FcValueEqual_dylibloader_orig_fontconfig
|
||||
#define FcValueSave FcValueSave_dylibloader_orig_fontconfig
|
||||
#define FcPatternDestroy FcPatternDestroy_dylibloader_orig_fontconfig
|
||||
#define FcPatternObjectCount FcPatternObjectCount_dylibloader_orig_fontconfig
|
||||
#define FcPatternEqual FcPatternEqual_dylibloader_orig_fontconfig
|
||||
#define FcPatternEqualSubset FcPatternEqualSubset_dylibloader_orig_fontconfig
|
||||
#define FcPatternHash FcPatternHash_dylibloader_orig_fontconfig
|
||||
|
|
@ -164,8 +188,18 @@
|
|||
#define FcRangeDestroy FcRangeDestroy_dylibloader_orig_fontconfig
|
||||
#define FcRangeCopy FcRangeCopy_dylibloader_orig_fontconfig
|
||||
#define FcRangeGetDouble FcRangeGetDouble_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterStart FcPatternIterStart_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterNext FcPatternIterNext_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterEqual FcPatternIterEqual_dylibloader_orig_fontconfig
|
||||
#define FcPatternFindIter FcPatternFindIter_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterIsValid FcPatternIterIsValid_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterGetObject FcPatternIterGetObject_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterValueCount FcPatternIterValueCount_dylibloader_orig_fontconfig
|
||||
#define FcPatternIterGetValue FcPatternIterGetValue_dylibloader_orig_fontconfig
|
||||
#define FcWeightFromOpenType FcWeightFromOpenType_dylibloader_orig_fontconfig
|
||||
#define FcWeightFromOpenTypeDouble FcWeightFromOpenTypeDouble_dylibloader_orig_fontconfig
|
||||
#define FcWeightToOpenType FcWeightToOpenType_dylibloader_orig_fontconfig
|
||||
#define FcWeightToOpenTypeDouble FcWeightToOpenTypeDouble_dylibloader_orig_fontconfig
|
||||
#define FcStrCopy FcStrCopy_dylibloader_orig_fontconfig
|
||||
#define FcStrCopyFilename FcStrCopyFilename_dylibloader_orig_fontconfig
|
||||
#define FcStrPlus FcStrPlus_dylibloader_orig_fontconfig
|
||||
|
|
@ -209,6 +243,8 @@
|
|||
#undef FcDirCacheValid
|
||||
#undef FcDirCacheClean
|
||||
#undef FcCacheCreateTagFile
|
||||
#undef FcDirCacheCreateUUID
|
||||
#undef FcDirCacheDeleteUUID
|
||||
#undef FcConfigHome
|
||||
#undef FcConfigEnableHome
|
||||
#undef FcConfigFilename
|
||||
|
|
@ -235,6 +271,26 @@
|
|||
#undef FcConfigSubstitute
|
||||
#undef FcConfigGetSysRoot
|
||||
#undef FcConfigSetSysRoot
|
||||
#undef FcConfigFileInfoIterInit
|
||||
#undef FcConfigFileInfoIterNext
|
||||
#undef FcConfigFileInfoIterGet
|
||||
#undef FcCharSetCreate
|
||||
#undef FcCharSetNew
|
||||
#undef FcCharSetDestroy
|
||||
#undef FcCharSetAddChar
|
||||
#undef FcCharSetDelChar
|
||||
#undef FcCharSetCopy
|
||||
#undef FcCharSetEqual
|
||||
#undef FcCharSetIntersect
|
||||
#undef FcCharSetUnion
|
||||
#undef FcCharSetSubtract
|
||||
#undef FcCharSetMerge
|
||||
#undef FcCharSetHasChar
|
||||
#undef FcCharSetCount
|
||||
#undef FcCharSetIntersectCount
|
||||
#undef FcCharSetSubtractCount
|
||||
#undef FcCharSetIsSubset
|
||||
#undef FcCharSetCoverage
|
||||
#undef FcValuePrint
|
||||
#undef FcPatternPrint
|
||||
#undef FcFontSetPrint
|
||||
|
|
@ -250,6 +306,7 @@
|
|||
#undef FcDirCacheLoadFile
|
||||
#undef FcDirCacheUnload
|
||||
#undef FcFreeTypeQuery
|
||||
#undef FcFreeTypeQueryAll
|
||||
#undef FcFontSetCreate
|
||||
#undef FcFontSetDestroy
|
||||
#undef FcFontSetAdd
|
||||
|
|
@ -320,6 +377,7 @@
|
|||
#undef FcValueEqual
|
||||
#undef FcValueSave
|
||||
#undef FcPatternDestroy
|
||||
#undef FcPatternObjectCount
|
||||
#undef FcPatternEqual
|
||||
#undef FcPatternEqualSubset
|
||||
#undef FcPatternHash
|
||||
|
|
@ -353,8 +411,18 @@
|
|||
#undef FcRangeDestroy
|
||||
#undef FcRangeCopy
|
||||
#undef FcRangeGetDouble
|
||||
#undef FcPatternIterStart
|
||||
#undef FcPatternIterNext
|
||||
#undef FcPatternIterEqual
|
||||
#undef FcPatternFindIter
|
||||
#undef FcPatternIterIsValid
|
||||
#undef FcPatternIterGetObject
|
||||
#undef FcPatternIterValueCount
|
||||
#undef FcPatternIterGetValue
|
||||
#undef FcWeightFromOpenType
|
||||
#undef FcWeightFromOpenTypeDouble
|
||||
#undef FcWeightToOpenType
|
||||
#undef FcWeightToOpenTypeDouble
|
||||
#undef FcStrCopy
|
||||
#undef FcStrCopyFilename
|
||||
#undef FcStrPlus
|
||||
|
|
@ -400,6 +468,8 @@ extern "C" {
|
|||
#define FcDirCacheValid FcDirCacheValid_dylibloader_wrapper_fontconfig
|
||||
#define FcDirCacheClean FcDirCacheClean_dylibloader_wrapper_fontconfig
|
||||
#define FcCacheCreateTagFile FcCacheCreateTagFile_dylibloader_wrapper_fontconfig
|
||||
#define FcDirCacheCreateUUID FcDirCacheCreateUUID_dylibloader_wrapper_fontconfig
|
||||
#define FcDirCacheDeleteUUID FcDirCacheDeleteUUID_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigHome FcConfigHome_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigEnableHome FcConfigEnableHome_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigFilename FcConfigFilename_dylibloader_wrapper_fontconfig
|
||||
|
|
@ -426,6 +496,26 @@ extern "C" {
|
|||
#define FcConfigSubstitute FcConfigSubstitute_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigGetSysRoot FcConfigGetSysRoot_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigSetSysRoot FcConfigSetSysRoot_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigFileInfoIterInit FcConfigFileInfoIterInit_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigFileInfoIterNext FcConfigFileInfoIterNext_dylibloader_wrapper_fontconfig
|
||||
#define FcConfigFileInfoIterGet FcConfigFileInfoIterGet_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetCreate FcCharSetCreate_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetNew FcCharSetNew_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetDestroy FcCharSetDestroy_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetAddChar FcCharSetAddChar_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetDelChar FcCharSetDelChar_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetCopy FcCharSetCopy_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetEqual FcCharSetEqual_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetIntersect FcCharSetIntersect_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetUnion FcCharSetUnion_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetSubtract FcCharSetSubtract_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetMerge FcCharSetMerge_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetHasChar FcCharSetHasChar_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetCount FcCharSetCount_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetIntersectCount FcCharSetIntersectCount_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetSubtractCount FcCharSetSubtractCount_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetIsSubset FcCharSetIsSubset_dylibloader_wrapper_fontconfig
|
||||
#define FcCharSetCoverage FcCharSetCoverage_dylibloader_wrapper_fontconfig
|
||||
#define FcValuePrint FcValuePrint_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternPrint FcPatternPrint_dylibloader_wrapper_fontconfig
|
||||
#define FcFontSetPrint FcFontSetPrint_dylibloader_wrapper_fontconfig
|
||||
|
|
@ -441,6 +531,7 @@ extern "C" {
|
|||
#define FcDirCacheLoadFile FcDirCacheLoadFile_dylibloader_wrapper_fontconfig
|
||||
#define FcDirCacheUnload FcDirCacheUnload_dylibloader_wrapper_fontconfig
|
||||
#define FcFreeTypeQuery FcFreeTypeQuery_dylibloader_wrapper_fontconfig
|
||||
#define FcFreeTypeQueryAll FcFreeTypeQueryAll_dylibloader_wrapper_fontconfig
|
||||
#define FcFontSetCreate FcFontSetCreate_dylibloader_wrapper_fontconfig
|
||||
#define FcFontSetDestroy FcFontSetDestroy_dylibloader_wrapper_fontconfig
|
||||
#define FcFontSetAdd FcFontSetAdd_dylibloader_wrapper_fontconfig
|
||||
|
|
@ -511,6 +602,7 @@ extern "C" {
|
|||
#define FcValueEqual FcValueEqual_dylibloader_wrapper_fontconfig
|
||||
#define FcValueSave FcValueSave_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternDestroy FcPatternDestroy_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternObjectCount FcPatternObjectCount_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternEqual FcPatternEqual_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternEqualSubset FcPatternEqualSubset_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternHash FcPatternHash_dylibloader_wrapper_fontconfig
|
||||
|
|
@ -544,8 +636,18 @@ extern "C" {
|
|||
#define FcRangeDestroy FcRangeDestroy_dylibloader_wrapper_fontconfig
|
||||
#define FcRangeCopy FcRangeCopy_dylibloader_wrapper_fontconfig
|
||||
#define FcRangeGetDouble FcRangeGetDouble_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterStart FcPatternIterStart_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterNext FcPatternIterNext_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterEqual FcPatternIterEqual_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternFindIter FcPatternFindIter_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterIsValid FcPatternIterIsValid_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterGetObject FcPatternIterGetObject_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterValueCount FcPatternIterValueCount_dylibloader_wrapper_fontconfig
|
||||
#define FcPatternIterGetValue FcPatternIterGetValue_dylibloader_wrapper_fontconfig
|
||||
#define FcWeightFromOpenType FcWeightFromOpenType_dylibloader_wrapper_fontconfig
|
||||
#define FcWeightFromOpenTypeDouble FcWeightFromOpenTypeDouble_dylibloader_wrapper_fontconfig
|
||||
#define FcWeightToOpenType FcWeightToOpenType_dylibloader_wrapper_fontconfig
|
||||
#define FcWeightToOpenTypeDouble FcWeightToOpenTypeDouble_dylibloader_wrapper_fontconfig
|
||||
#define FcStrCopy FcStrCopy_dylibloader_wrapper_fontconfig
|
||||
#define FcStrCopyFilename FcStrCopyFilename_dylibloader_wrapper_fontconfig
|
||||
#define FcStrPlus FcStrPlus_dylibloader_wrapper_fontconfig
|
||||
|
|
@ -588,6 +690,8 @@ extern FcBool (*FcDirCacheUnlink_dylibloader_wrapper_fontconfig)(const FcChar8*,
|
|||
extern FcBool (*FcDirCacheValid_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
extern FcBool (*FcDirCacheClean_dylibloader_wrapper_fontconfig)(const FcChar8*, FcBool);
|
||||
extern void (*FcCacheCreateTagFile_dylibloader_wrapper_fontconfig)(const FcConfig*);
|
||||
extern FcBool (*FcDirCacheCreateUUID_dylibloader_wrapper_fontconfig)( FcChar8*, FcBool, FcConfig*);
|
||||
extern FcBool (*FcDirCacheDeleteUUID_dylibloader_wrapper_fontconfig)(const FcChar8*, FcConfig*);
|
||||
extern FcChar8* (*FcConfigHome_dylibloader_wrapper_fontconfig)( void);
|
||||
extern FcBool (*FcConfigEnableHome_dylibloader_wrapper_fontconfig)( FcBool);
|
||||
extern FcChar8* (*FcConfigFilename_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
|
|
@ -614,6 +718,26 @@ extern FcBool (*FcConfigSubstituteWithPat_dylibloader_wrapper_fontconfig)( FcCon
|
|||
extern FcBool (*FcConfigSubstitute_dylibloader_wrapper_fontconfig)( FcConfig*, FcPattern*, FcMatchKind);
|
||||
extern const FcChar8* (*FcConfigGetSysRoot_dylibloader_wrapper_fontconfig)(const FcConfig*);
|
||||
extern void (*FcConfigSetSysRoot_dylibloader_wrapper_fontconfig)( FcConfig*,const FcChar8*);
|
||||
extern void (*FcConfigFileInfoIterInit_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*);
|
||||
extern FcBool (*FcConfigFileInfoIterNext_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*);
|
||||
extern FcBool (*FcConfigFileInfoIterGet_dylibloader_wrapper_fontconfig)( FcConfig*, FcConfigFileInfoIter*, FcChar8**, FcChar8**, FcBool*);
|
||||
extern FcCharSet* (*FcCharSetCreate_dylibloader_wrapper_fontconfig)( void);
|
||||
extern FcCharSet* (*FcCharSetNew_dylibloader_wrapper_fontconfig)( void);
|
||||
extern void (*FcCharSetDestroy_dylibloader_wrapper_fontconfig)( FcCharSet*);
|
||||
extern FcBool (*FcCharSetAddChar_dylibloader_wrapper_fontconfig)( FcCharSet*, FcChar32);
|
||||
extern FcBool (*FcCharSetDelChar_dylibloader_wrapper_fontconfig)( FcCharSet*, FcChar32);
|
||||
extern FcCharSet* (*FcCharSetCopy_dylibloader_wrapper_fontconfig)( FcCharSet*);
|
||||
extern FcBool (*FcCharSetEqual_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcCharSet* (*FcCharSetIntersect_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcCharSet* (*FcCharSetUnion_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcCharSet* (*FcCharSetSubtract_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcBool (*FcCharSetMerge_dylibloader_wrapper_fontconfig)( FcCharSet*,const FcCharSet*, FcBool*);
|
||||
extern FcBool (*FcCharSetHasChar_dylibloader_wrapper_fontconfig)(const FcCharSet*, FcChar32);
|
||||
extern FcChar32 (*FcCharSetCount_dylibloader_wrapper_fontconfig)(const FcCharSet*);
|
||||
extern FcChar32 (*FcCharSetIntersectCount_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcChar32 (*FcCharSetSubtractCount_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcBool (*FcCharSetIsSubset_dylibloader_wrapper_fontconfig)(const FcCharSet*,const FcCharSet*);
|
||||
extern FcChar32 (*FcCharSetCoverage_dylibloader_wrapper_fontconfig)(const FcCharSet*, FcChar32, FcChar32*);
|
||||
extern void (*FcValuePrint_dylibloader_wrapper_fontconfig)(const FcValue);
|
||||
extern void (*FcPatternPrint_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
extern void (*FcFontSetPrint_dylibloader_wrapper_fontconfig)(const FcFontSet*);
|
||||
|
|
@ -628,7 +752,8 @@ extern FcCache* (*FcDirCacheRescan_dylibloader_wrapper_fontconfig)(const FcChar8
|
|||
extern FcCache* (*FcDirCacheRead_dylibloader_wrapper_fontconfig)(const FcChar8*, FcBool, FcConfig*);
|
||||
extern FcCache* (*FcDirCacheLoadFile_dylibloader_wrapper_fontconfig)(const FcChar8*,struct stat*);
|
||||
extern void (*FcDirCacheUnload_dylibloader_wrapper_fontconfig)( FcCache*);
|
||||
extern FcPattern* (*FcFreeTypeQuery_dylibloader_wrapper_fontconfig)(const FcChar8*, int, FcBlanks*, int*);
|
||||
extern FcPattern* (*FcFreeTypeQuery_dylibloader_wrapper_fontconfig)(const FcChar8*, unsigned int, FcBlanks*, int*);
|
||||
extern unsigned int (*FcFreeTypeQueryAll_dylibloader_wrapper_fontconfig)(const FcChar8*, unsigned int, FcBlanks*, int*, FcFontSet*);
|
||||
extern FcFontSet* (*FcFontSetCreate_dylibloader_wrapper_fontconfig)( void);
|
||||
extern void (*FcFontSetDestroy_dylibloader_wrapper_fontconfig)( FcFontSet*);
|
||||
extern FcBool (*FcFontSetAdd_dylibloader_wrapper_fontconfig)( FcFontSet*, FcPattern*);
|
||||
|
|
@ -699,6 +824,7 @@ extern void (*FcValueDestroy_dylibloader_wrapper_fontconfig)( FcValue);
|
|||
extern FcBool (*FcValueEqual_dylibloader_wrapper_fontconfig)( FcValue, FcValue);
|
||||
extern FcValue (*FcValueSave_dylibloader_wrapper_fontconfig)( FcValue);
|
||||
extern void (*FcPatternDestroy_dylibloader_wrapper_fontconfig)( FcPattern*);
|
||||
extern int (*FcPatternObjectCount_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
extern FcBool (*FcPatternEqual_dylibloader_wrapper_fontconfig)(const FcPattern*,const FcPattern*);
|
||||
extern FcBool (*FcPatternEqualSubset_dylibloader_wrapper_fontconfig)(const FcPattern*,const FcPattern*,const FcObjectSet*);
|
||||
extern FcChar32 (*FcPatternHash_dylibloader_wrapper_fontconfig)(const FcPattern*);
|
||||
|
|
@ -732,8 +858,18 @@ extern FcRange* (*FcRangeCreateInteger_dylibloader_wrapper_fontconfig)( FcChar32
|
|||
extern void (*FcRangeDestroy_dylibloader_wrapper_fontconfig)( FcRange*);
|
||||
extern FcRange* (*FcRangeCopy_dylibloader_wrapper_fontconfig)(const FcRange*);
|
||||
extern FcBool (*FcRangeGetDouble_dylibloader_wrapper_fontconfig)(const FcRange*, double*, double*);
|
||||
extern void (*FcPatternIterStart_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
extern FcBool (*FcPatternIterNext_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
extern FcBool (*FcPatternIterEqual_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*,const FcPattern*, FcPatternIter*);
|
||||
extern FcBool (*FcPatternFindIter_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*,const char*);
|
||||
extern FcBool (*FcPatternIterIsValid_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
extern const char* (*FcPatternIterGetObject_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
extern int (*FcPatternIterValueCount_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*);
|
||||
extern FcResult (*FcPatternIterGetValue_dylibloader_wrapper_fontconfig)(const FcPattern*, FcPatternIter*, int, FcValue*, FcValueBinding*);
|
||||
extern int (*FcWeightFromOpenType_dylibloader_wrapper_fontconfig)( int);
|
||||
extern double (*FcWeightFromOpenTypeDouble_dylibloader_wrapper_fontconfig)( double);
|
||||
extern int (*FcWeightToOpenType_dylibloader_wrapper_fontconfig)( int);
|
||||
extern double (*FcWeightToOpenTypeDouble_dylibloader_wrapper_fontconfig)( double);
|
||||
extern FcChar8* (*FcStrCopy_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
extern FcChar8* (*FcStrCopyFilename_dylibloader_wrapper_fontconfig)(const FcChar8*);
|
||||
extern FcChar8* (*FcStrPlus_dylibloader_wrapper_fontconfig)(const FcChar8*,const FcChar8*);
|
||||
|
|
|
|||
|
|
@ -56,10 +56,6 @@
|
|||
#include <sys/utsname.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
#include "fontconfig-so_wrap.h"
|
||||
#endif
|
||||
|
||||
void OS_LinuxBSD::alert(const String &p_alert, const String &p_title) {
|
||||
const char *message_programs[] = { "zenity", "kdialog", "Xdialog", "xmessage" };
|
||||
|
||||
|
|
@ -585,15 +581,9 @@ Vector<String> OS_LinuxBSD::get_system_fonts() const {
|
|||
if (!font_config_initialized) {
|
||||
ERR_FAIL_V_MSG(Vector<String>(), "Unable to load fontconfig, system font support is disabled.");
|
||||
}
|
||||
|
||||
HashSet<String> font_names;
|
||||
Vector<String> ret;
|
||||
|
||||
FcConfig *config = FcInitLoadConfigAndFonts();
|
||||
ERR_FAIL_COND_V(!config, ret);
|
||||
|
||||
FcObjectSet *object_set = FcObjectSetBuild(FC_FAMILY, nullptr);
|
||||
ERR_FAIL_COND_V(!object_set, ret);
|
||||
|
||||
static const char *allowed_formats[] = { "TrueType", "CFF" };
|
||||
for (size_t i = 0; i < sizeof(allowed_formats) / sizeof(const char *); i++) {
|
||||
FcPattern *pattern = FcPatternCreate();
|
||||
|
|
@ -616,8 +606,6 @@ Vector<String> OS_LinuxBSD::get_system_fonts() const {
|
|||
}
|
||||
FcPatternDestroy(pattern);
|
||||
}
|
||||
FcObjectSetDestroy(object_set);
|
||||
FcConfigDestroy(config);
|
||||
|
||||
for (const String &E : font_names) {
|
||||
ret.push_back(E);
|
||||
|
|
@ -628,27 +616,120 @@ Vector<String> OS_LinuxBSD::get_system_fonts() const {
|
|||
#endif
|
||||
}
|
||||
|
||||
String OS_LinuxBSD::get_system_font_path(const String &p_font_name, bool p_bold, bool p_italic) const {
|
||||
int OS_LinuxBSD::_weight_to_fc(int p_weight) const {
|
||||
if (p_weight < 150) {
|
||||
return FC_WEIGHT_THIN;
|
||||
} else if (p_weight < 250) {
|
||||
return FC_WEIGHT_EXTRALIGHT;
|
||||
} else if (p_weight < 325) {
|
||||
return FC_WEIGHT_LIGHT;
|
||||
} else if (p_weight < 375) {
|
||||
return FC_WEIGHT_DEMILIGHT;
|
||||
} else if (p_weight < 390) {
|
||||
return FC_WEIGHT_BOOK;
|
||||
} else if (p_weight < 450) {
|
||||
return FC_WEIGHT_REGULAR;
|
||||
} else if (p_weight < 550) {
|
||||
return FC_WEIGHT_MEDIUM;
|
||||
} else if (p_weight < 650) {
|
||||
return FC_WEIGHT_DEMIBOLD;
|
||||
} else if (p_weight < 750) {
|
||||
return FC_WEIGHT_BOLD;
|
||||
} else if (p_weight < 850) {
|
||||
return FC_WEIGHT_EXTRABOLD;
|
||||
} else if (p_weight < 925) {
|
||||
return FC_WEIGHT_BLACK;
|
||||
} else {
|
||||
return FC_WEIGHT_EXTRABLACK;
|
||||
}
|
||||
}
|
||||
|
||||
int OS_LinuxBSD::_stretch_to_fc(int p_stretch) const {
|
||||
if (p_stretch < 56) {
|
||||
return FC_WIDTH_ULTRACONDENSED;
|
||||
} else if (p_stretch < 69) {
|
||||
return FC_WIDTH_EXTRACONDENSED;
|
||||
} else if (p_stretch < 81) {
|
||||
return FC_WIDTH_CONDENSED;
|
||||
} else if (p_stretch < 93) {
|
||||
return FC_WIDTH_SEMICONDENSED;
|
||||
} else if (p_stretch < 106) {
|
||||
return FC_WIDTH_NORMAL;
|
||||
} else if (p_stretch < 137) {
|
||||
return FC_WIDTH_SEMIEXPANDED;
|
||||
} else if (p_stretch < 144) {
|
||||
return FC_WIDTH_EXPANDED;
|
||||
} else if (p_stretch < 162) {
|
||||
return FC_WIDTH_EXTRAEXPANDED;
|
||||
} else {
|
||||
return FC_WIDTH_ULTRAEXPANDED;
|
||||
}
|
||||
}
|
||||
|
||||
Vector<String> OS_LinuxBSD::get_system_font_path_for_text(const String &p_font_name, const String &p_text, const String &p_locale, const String &p_script, int p_weight, int p_stretch, bool p_italic) const {
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
if (!font_config_initialized) {
|
||||
ERR_FAIL_V_MSG(Vector<String>(), "Unable to load fontconfig, system font support is disabled.");
|
||||
}
|
||||
|
||||
Vector<String> ret;
|
||||
FcPattern *pattern = FcPatternCreate();
|
||||
if (pattern) {
|
||||
FcPatternAddString(pattern, FC_FAMILY, reinterpret_cast<const FcChar8 *>(p_font_name.utf8().get_data()));
|
||||
FcPatternAddInteger(pattern, FC_WEIGHT, _weight_to_fc(p_weight));
|
||||
FcPatternAddInteger(pattern, FC_WIDTH, _stretch_to_fc(p_stretch));
|
||||
FcPatternAddInteger(pattern, FC_SLANT, p_italic ? FC_SLANT_ITALIC : FC_SLANT_ROMAN);
|
||||
|
||||
FcCharSet *char_set = FcCharSetCreate();
|
||||
for (int i = 0; i < p_text.size(); i++) {
|
||||
FcCharSetAddChar(char_set, p_text[i]);
|
||||
}
|
||||
FcPatternAddCharSet(pattern, FC_CHARSET, char_set);
|
||||
|
||||
FcLangSet *lang_set = FcLangSetCreate();
|
||||
FcLangSetAdd(lang_set, reinterpret_cast<const FcChar8 *>(p_locale.utf8().get_data()));
|
||||
FcPatternAddLangSet(pattern, FC_LANG, lang_set);
|
||||
|
||||
FcConfigSubstitute(0, pattern, FcMatchPattern);
|
||||
FcDefaultSubstitute(pattern);
|
||||
|
||||
FcResult result;
|
||||
FcPattern *match = FcFontMatch(0, pattern, &result);
|
||||
if (match) {
|
||||
char *file_name = nullptr;
|
||||
if (FcPatternGetString(match, FC_FILE, 0, reinterpret_cast<FcChar8 **>(&file_name)) == FcResultMatch) {
|
||||
if (file_name) {
|
||||
ret.push_back(String::utf8(file_name));
|
||||
}
|
||||
}
|
||||
FcPatternDestroy(match);
|
||||
}
|
||||
FcPatternDestroy(pattern);
|
||||
FcCharSetDestroy(char_set);
|
||||
FcLangSetDestroy(lang_set);
|
||||
}
|
||||
|
||||
return ret;
|
||||
#else
|
||||
ERR_FAIL_V_MSG(Vector<String>(), "Godot was compiled without fontconfig, system font support is disabled.");
|
||||
#endif
|
||||
}
|
||||
|
||||
String OS_LinuxBSD::get_system_font_path(const String &p_font_name, int p_weight, int p_stretch, bool p_italic) const {
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
if (!font_config_initialized) {
|
||||
ERR_FAIL_V_MSG(String(), "Unable to load fontconfig, system font support is disabled.");
|
||||
}
|
||||
|
||||
bool allow_substitutes = (p_font_name.to_lower() == "sans-serif") || (p_font_name.to_lower() == "serif") || (p_font_name.to_lower() == "monospace") || (p_font_name.to_lower() == "cursive") || (p_font_name.to_lower() == "fantasy");
|
||||
|
||||
String ret;
|
||||
|
||||
FcConfig *config = FcInitLoadConfigAndFonts();
|
||||
ERR_FAIL_COND_V(!config, ret);
|
||||
|
||||
FcObjectSet *object_set = FcObjectSetBuild(FC_FAMILY, FC_FILE, nullptr);
|
||||
ERR_FAIL_COND_V(!object_set, ret);
|
||||
|
||||
FcPattern *pattern = FcPatternCreate();
|
||||
if (pattern) {
|
||||
bool allow_substitutes = (p_font_name.to_lower() == "sans-serif") || (p_font_name.to_lower() == "serif") || (p_font_name.to_lower() == "monospace") || (p_font_name.to_lower() == "cursive") || (p_font_name.to_lower() == "fantasy");
|
||||
|
||||
FcPatternAddBool(pattern, FC_SCALABLE, FcTrue);
|
||||
FcPatternAddString(pattern, FC_FAMILY, reinterpret_cast<const FcChar8 *>(p_font_name.utf8().get_data()));
|
||||
FcPatternAddInteger(pattern, FC_WEIGHT, p_bold ? FC_WEIGHT_BOLD : FC_WEIGHT_NORMAL);
|
||||
FcPatternAddInteger(pattern, FC_WEIGHT, _weight_to_fc(p_weight));
|
||||
FcPatternAddInteger(pattern, FC_WIDTH, _stretch_to_fc(p_stretch));
|
||||
FcPatternAddInteger(pattern, FC_SLANT, p_italic ? FC_SLANT_ITALIC : FC_SLANT_ROMAN);
|
||||
|
||||
FcConfigSubstitute(0, pattern, FcMatchPattern);
|
||||
|
|
@ -663,8 +744,6 @@ String OS_LinuxBSD::get_system_font_path(const String &p_font_name, bool p_bold,
|
|||
if (family_name && String::utf8(family_name).to_lower() != p_font_name.to_lower()) {
|
||||
FcPatternDestroy(match);
|
||||
FcPatternDestroy(pattern);
|
||||
FcObjectSetDestroy(object_set);
|
||||
FcConfigDestroy(config);
|
||||
|
||||
return String();
|
||||
}
|
||||
|
|
@ -681,8 +760,6 @@ String OS_LinuxBSD::get_system_font_path(const String &p_font_name, bool p_bold,
|
|||
}
|
||||
FcPatternDestroy(pattern);
|
||||
}
|
||||
FcObjectSetDestroy(object_set);
|
||||
FcConfigDestroy(config);
|
||||
|
||||
return ret;
|
||||
#else
|
||||
|
|
@ -1008,5 +1085,26 @@ OS_LinuxBSD::OS_LinuxBSD() {
|
|||
int dylibloader_verbose = 0;
|
||||
#endif
|
||||
font_config_initialized = (initialize_fontconfig(dylibloader_verbose) == 0);
|
||||
if (font_config_initialized) {
|
||||
config = FcInitLoadConfigAndFonts();
|
||||
if (!config) {
|
||||
font_config_initialized = false;
|
||||
}
|
||||
object_set = FcObjectSetBuild(FC_FAMILY, FC_FILE, nullptr);
|
||||
if (!object_set) {
|
||||
font_config_initialized = false;
|
||||
}
|
||||
}
|
||||
#endif // FONTCONFIG_ENABLED
|
||||
}
|
||||
|
||||
OS_LinuxBSD::~OS_LinuxBSD() {
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
if (object_set) {
|
||||
FcObjectSetDestroy(object_set);
|
||||
}
|
||||
if (config) {
|
||||
FcConfigDestroy(config);
|
||||
}
|
||||
#endif // FONTCONFIG_ENABLED
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,11 +40,17 @@
|
|||
#include "joypad_linux.h"
|
||||
#include "servers/audio_server.h"
|
||||
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
#include "fontconfig-so_wrap.h"
|
||||
#endif
|
||||
|
||||
class OS_LinuxBSD : public OS_Unix {
|
||||
virtual void delete_main_loop() override;
|
||||
|
||||
#ifdef FONTCONFIG_ENABLED
|
||||
bool font_config_initialized = false;
|
||||
FcConfig *config = nullptr;
|
||||
FcObjectSet *object_set = nullptr;
|
||||
#endif
|
||||
|
||||
#ifdef JOYDEV_ENABLED
|
||||
|
|
@ -67,6 +73,9 @@ class OS_LinuxBSD : public OS_Unix {
|
|||
|
||||
MainLoop *main_loop = nullptr;
|
||||
|
||||
int _weight_to_fc(int p_weight) const;
|
||||
int _stretch_to_fc(int p_stretch) const;
|
||||
|
||||
String get_systemd_os_release_info_value(const String &key) const;
|
||||
|
||||
Vector<String> lspci_device_filter(Vector<String> vendor_device_id_mapping, String class_suffix, String check_column, String whitelist) const;
|
||||
|
|
@ -94,7 +103,8 @@ public:
|
|||
virtual uint64_t get_embedded_pck_offset() const override;
|
||||
|
||||
virtual Vector<String> get_system_fonts() const override;
|
||||
virtual String get_system_font_path(const String &p_font_name, bool p_bold = false, bool p_italic = false) const override;
|
||||
virtual String get_system_font_path(const String &p_font_name, int p_weight = 400, int p_stretch = 100, bool p_italic = false) const override;
|
||||
virtual Vector<String> get_system_font_path_for_text(const String &p_font_name, const String &p_text, const String &p_locale = String(), const String &p_script = String(), int p_weight = 400, int p_stretch = 100, bool p_italic = false) const override;
|
||||
|
||||
virtual String get_config_path() const override;
|
||||
virtual String get_data_path() const override;
|
||||
|
|
@ -119,6 +129,7 @@ public:
|
|||
virtual Error move_to_trash(const String &p_path) override;
|
||||
|
||||
OS_LinuxBSD();
|
||||
~OS_LinuxBSD();
|
||||
};
|
||||
|
||||
#endif // OS_LINUXBSD_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue