mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Fonts: Add OpenType feature support
This commit is contained in:
parent
a5797efeb0
commit
d651f6740c
42 changed files with 1104 additions and 33 deletions
|
|
@ -1111,6 +1111,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -1855,6 +1856,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
@ -3771,6 +3774,7 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -4515,6 +4519,8 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
|
||||||
|
|
@ -2160,6 +2160,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3902,6 +3905,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4382,6 +4386,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2923,6 +2923,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -6006,6 +6009,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -7446,6 +7452,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -2160,6 +2160,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3902,6 +3905,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4382,6 +4386,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2923,6 +2923,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -6006,6 +6009,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -7446,6 +7452,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -970,6 +970,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -1617,6 +1618,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
@ -3244,6 +3247,7 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -3891,6 +3895,8 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
|
||||||
|
|
@ -1851,6 +1851,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3368,6 +3371,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -3795,6 +3799,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2431,6 +2431,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5124,6 +5127,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6405,6 +6411,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1003,6 +1003,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -1747,6 +1748,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
@ -3430,6 +3433,7 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -4174,6 +4178,8 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
|
||||||
|
|
@ -1985,6 +1985,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3548,6 +3551,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4028,6 +4032,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2638,6 +2638,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5400,6 +5403,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6840,6 +6846,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1985,6 +1985,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3548,6 +3551,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4028,6 +4032,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2638,6 +2638,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5400,6 +5403,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6840,6 +6846,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -586,6 +586,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
|
||||||
|
|
@ -690,6 +690,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -974,6 +974,7 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -1636,6 +1637,8 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
@ -3328,6 +3331,7 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
"../../../../../modules/juce_core/misc/juce_EnumHelpers_test.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
"../../../../../modules/juce_core/misc/juce_Functional.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
"../../../../../modules/juce_core/misc/juce_OptionsHelpers.h"
|
||||||
|
"../../../../../modules/juce_core/misc/juce_OrderedContainerHelpers.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
"../../../../../modules/juce_core/misc/juce_Result.cpp"
|
||||||
"../../../../../modules/juce_core/misc/juce_Result.h"
|
"../../../../../modules/juce_core/misc/juce_Result.h"
|
||||||
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
"../../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"
|
||||||
|
|
@ -3990,6 +3994,8 @@ set_source_files_properties(
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
"../../../../../modules/juce_graphics/fonts/juce_AttributedString.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
"../../../../../modules/juce_graphics/fonts/juce_Font.h"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.cpp"
|
||||||
|
"../../../../../modules/juce_graphics/fonts/juce_FontFeatures.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.cpp"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FontOptions.h"
|
||||||
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
"../../../../../modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h"
|
||||||
|
|
|
||||||
|
|
@ -1872,6 +1872,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3459,6 +3462,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -3893,6 +3897,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2485,6 +2485,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5265,6 +5268,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6567,6 +6573,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1017,6 +1017,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2159,6 +2162,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -2593,6 +2597,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1339,6 +1339,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2913,6 +2916,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4215,6 +4221,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1017,6 +1017,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2159,6 +2162,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -2593,6 +2597,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -1339,6 +1339,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2913,6 +2916,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4215,6 +4221,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1993,6 +1993,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3660,6 +3663,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4140,6 +4144,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2686,6 +2686,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5559,6 +5562,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6999,6 +7005,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1993,6 +1993,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3660,6 +3663,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -4140,6 +4144,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2686,6 +2686,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5559,6 +5562,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6999,6 +7005,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -1871,6 +1871,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3435,6 +3438,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_EnumHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Functional.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_RuntimePermissions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_ScopeGuard.h"/>
|
||||||
|
|
@ -3869,6 +3873,7 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\harfbuzz\hb.hh"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_AttributedString.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FunctionPointerDestructor.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_GlyphArrangement.h"/>
|
||||||
|
|
|
||||||
|
|
@ -2482,6 +2482,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.cpp">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -5232,6 +5235,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OptionsHelpers.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_OrderedContainerHelpers.h">
|
||||||
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
<ClInclude Include="..\..\..\..\modules\juce_core\misc\juce_Result.h">
|
||||||
<Filter>JUCE Modules\juce_core\misc</Filter>
|
<Filter>JUCE Modules\juce_core\misc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -6534,6 +6540,9 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_Font.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontFeatures.h">
|
||||||
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
<ClInclude Include="..\..\..\..\modules\juce_graphics\fonts\juce_FontOptions.h">
|
||||||
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
<Filter>JUCE Modules\juce_graphics\fonts</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,7 @@ namespace juce
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "misc/juce_EnumHelpers.h"
|
#include "misc/juce_EnumHelpers.h"
|
||||||
|
#include "misc/juce_OrderedContainerHelpers.h"
|
||||||
#include "memory/juce_Memory.h"
|
#include "memory/juce_Memory.h"
|
||||||
#include "maths/juce_MathsFunctions.h"
|
#include "maths/juce_MathsFunctions.h"
|
||||||
#include "memory/juce_ByteOrder.h"
|
#include "memory/juce_ByteOrder.h"
|
||||||
|
|
|
||||||
108
modules/juce_core/misc/juce_OrderedContainerHelpers.h
Normal file
108
modules/juce_core/misc/juce_OrderedContainerHelpers.h
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE framework.
|
||||||
|
Copyright (c) Raw Material Software Limited
|
||||||
|
|
||||||
|
JUCE is an open source framework subject to commercial or open source
|
||||||
|
licensing.
|
||||||
|
|
||||||
|
By downloading, installing, or using the JUCE framework, or combining the
|
||||||
|
JUCE framework with any other source code, object code, content or any other
|
||||||
|
copyrightable work, you agree to the terms of the JUCE End User Licence
|
||||||
|
Agreement, and all incorporated terms including the JUCE Privacy Policy and
|
||||||
|
the JUCE Website Terms of Service, as applicable, which will bind you. If you
|
||||||
|
do not agree to the terms of these agreements, we will not license the JUCE
|
||||||
|
framework to you, and you must discontinue the installation or download
|
||||||
|
process and cease use of the JUCE framework.
|
||||||
|
|
||||||
|
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
|
||||||
|
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
|
||||||
|
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
You may also use this code under the terms of the AGPLv3:
|
||||||
|
https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
|
||||||
|
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
|
||||||
|
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
|
||||||
|
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
/** A helper struct providing functions for managing sorted containers.
|
||||||
|
|
||||||
|
These helper functions simplify common operations on containers that
|
||||||
|
are kept in a sorted order.
|
||||||
|
|
||||||
|
@tags{Core}
|
||||||
|
*/
|
||||||
|
struct OrderedContainerHelpers
|
||||||
|
{
|
||||||
|
/** Returns true if neither value compares less than the other.
|
||||||
|
This is the same definition of equivalence as used by the std containers "set" and "map".
|
||||||
|
*/
|
||||||
|
template <typename A, typename B, typename Less = std::less<>>
|
||||||
|
static constexpr bool equivalent (const A& a, const B& b, Less less = {})
|
||||||
|
{
|
||||||
|
return ! less (a, b) && ! less (b, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** If the container already contains a value equivalent to the valueToInsert, assigns
|
||||||
|
the new value over the old one; otherwise, if no equivalent tag exists, inserts the
|
||||||
|
new value preserving the sorted property of the container.
|
||||||
|
*/
|
||||||
|
template <typename OrderedContainer, typename ValueType, typename Less = std::less<>>
|
||||||
|
static void insertOrAssign (OrderedContainer& container,
|
||||||
|
const ValueType& valueToInsert,
|
||||||
|
Less less = {})
|
||||||
|
{
|
||||||
|
// This function won't do the right thing on a container that's not sorted!
|
||||||
|
jassert (std::is_sorted (container.begin(), container.end(), less));
|
||||||
|
|
||||||
|
auto iter = std::lower_bound (container.begin(), container.end(), valueToInsert, less);
|
||||||
|
|
||||||
|
if (iter != container.end() && equivalent (*iter, valueToInsert, less))
|
||||||
|
{
|
||||||
|
*iter = valueToInsert;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
container.insert (iter, valueToInsert);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Removes a specific element from a sorted array, preserving order.
|
||||||
|
|
||||||
|
Searches for an element in the container that compares equivalent to valueToRemove and
|
||||||
|
erases it if present, preserving the sorted property of the container.
|
||||||
|
|
||||||
|
Returns true if the array was modified or false otherwise (i.e. the element was not removed).
|
||||||
|
*/
|
||||||
|
template <typename OrderedContainer, typename ValueType, typename Less = std::less<>>
|
||||||
|
static bool remove (OrderedContainer& container,
|
||||||
|
const ValueType& valueToRemove,
|
||||||
|
Less less = {})
|
||||||
|
{
|
||||||
|
// This function won't do the right thing on a container that's not sorted!
|
||||||
|
jassert (std::is_sorted (container.begin(), container.end(), less));
|
||||||
|
|
||||||
|
auto iter = std::lower_bound (container.begin(), container.end(), valueToRemove, less);
|
||||||
|
|
||||||
|
if (iter == container.end() || ! equivalent (*iter, valueToRemove, less))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
container.erase (iter);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
OrderedContainerHelpers() = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -165,6 +165,51 @@ static auto findControlCharacters (Span<const juce_wchar> string)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static constexpr hb_feature_t hbFeature (FontFeatureSetting setting)
|
||||||
|
{
|
||||||
|
return { setting.tag.getTag(),
|
||||||
|
setting.value,
|
||||||
|
HB_FEATURE_GLOBAL_START,
|
||||||
|
HB_FEATURE_GLOBAL_END };
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class LigatureEnabledState
|
||||||
|
{
|
||||||
|
normal,
|
||||||
|
disabled
|
||||||
|
};
|
||||||
|
|
||||||
|
static std::vector<hb_feature_t> getHarfbuzzFeatures (Span<const FontFeatureSetting> settings,
|
||||||
|
LigatureEnabledState ligatureEnabledstate)
|
||||||
|
{
|
||||||
|
// Font feature settings *should* always be sorted.
|
||||||
|
jassert (std::is_sorted (settings.begin(), settings.end()));
|
||||||
|
|
||||||
|
std::vector<hb_feature_t> features;
|
||||||
|
|
||||||
|
features.reserve (settings.size());
|
||||||
|
std::transform (settings.begin(), settings.end(), std::back_inserter (features), hbFeature);
|
||||||
|
|
||||||
|
if (ligatureEnabledstate == LigatureEnabledState::disabled)
|
||||||
|
{
|
||||||
|
static constexpr FontFeatureTag tagsAffectedByTracking[] { FontFeatureTag { "liga" },
|
||||||
|
FontFeatureTag { "clig" },
|
||||||
|
FontFeatureTag { "hlig" },
|
||||||
|
FontFeatureTag { "dlig" },
|
||||||
|
FontFeatureTag { "calt" } };
|
||||||
|
|
||||||
|
static constexpr auto less = [] (hb_feature_t a, hb_feature_t b)
|
||||||
|
{
|
||||||
|
return a.tag < b.tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
for (auto tag : tagsAffectedByTracking)
|
||||||
|
OrderedContainerHelpers::insertOrAssign (features, hbFeature ({ tag, 0 }), less);
|
||||||
|
}
|
||||||
|
|
||||||
|
return features;
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns glyphs in logical order as that favours wrapping. */
|
/* Returns glyphs in logical order as that favours wrapping. */
|
||||||
static std::vector<ShapedGlyph> lowLevelShape (Span<const juce_wchar> string,
|
static std::vector<ShapedGlyph> lowLevelShape (Span<const juce_wchar> string,
|
||||||
Range<int64> range,
|
Range<int64> range,
|
||||||
|
|
@ -201,16 +246,6 @@ static std::vector<ShapedGlyph> lowLevelShape (Span<const juce_wchar> string,
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
std::vector<hb_feature_t> features;
|
|
||||||
|
|
||||||
// Disable ligatures if we're using non-standard tracking
|
|
||||||
const auto tracking = font.getExtraKerningFactor();
|
|
||||||
const auto trackingIsDefault = approximatelyEqual (tracking, 0.0f, absoluteTolerance (0.001f));
|
|
||||||
|
|
||||||
if (! trackingIsDefault)
|
|
||||||
for (const auto key : { hbTag ("liga"), hbTag ("clig"), hbTag ("hlig"), hbTag ("dlig"), hbTag ("calt") })
|
|
||||||
features.push_back (hb_feature_t { key, 0, HB_FEATURE_GLOBAL_START, HB_FEATURE_GLOBAL_END });
|
|
||||||
|
|
||||||
hb_buffer_guess_segment_properties (buffer.get());
|
hb_buffer_guess_segment_properties (buffer.get());
|
||||||
|
|
||||||
auto nativeFont = font.getNativeDetails().font;
|
auto nativeFont = font.getNativeDetails().font;
|
||||||
|
|
@ -218,6 +253,13 @@ static std::vector<ShapedGlyph> lowLevelShape (Span<const juce_wchar> string,
|
||||||
if (nativeFont == nullptr)
|
if (nativeFont == nullptr)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
|
const auto tracking = font.getExtraKerningFactor();
|
||||||
|
const auto trackingIsDefault = approximatelyEqual (tracking, 0.0f, absoluteTolerance (0.001f));
|
||||||
|
|
||||||
|
const auto features = getHarfbuzzFeatures (font.getFeatureSettings(),
|
||||||
|
trackingIsDefault ? LigatureEnabledState::normal
|
||||||
|
: LigatureEnabledState::disabled);
|
||||||
|
|
||||||
hb_shape (nativeFont.get(), buffer.get(), features.data(), (unsigned int) features.size());
|
hb_shape (nativeFont.get(), buffer.get(), features.data(), (unsigned int) features.size());
|
||||||
|
|
||||||
const auto [infos, positions] = [&buffer]
|
const auto [infos, positions] = [&buffer]
|
||||||
|
|
@ -1551,7 +1593,138 @@ struct SimpleShapedTextTests : public UnitTest
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class HarfbuzzFontFeatureTests : public UnitTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HarfbuzzFontFeatureTests()
|
||||||
|
: UnitTest ("HarfbuzzFontFeatureTests", UnitTestCategories::text)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
static constexpr FontFeatureSetting input[] =
|
||||||
|
{
|
||||||
|
FontFeatureSetting { "calt", 1 },
|
||||||
|
FontFeatureSetting { "clig", 1 },
|
||||||
|
FontFeatureSetting { "dlig", 1 },
|
||||||
|
FontFeatureSetting { "hlig", 1 },
|
||||||
|
FontFeatureSetting { "liga", 1 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr auto compare = [] (hb_feature_t a, hb_feature_t b)
|
||||||
|
{
|
||||||
|
return a.value == b.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
beginTest ("Disabling ligatures overrides existing ligature feature values in feature set");
|
||||||
|
{
|
||||||
|
static constexpr hb_feature_t expected[] =
|
||||||
|
{
|
||||||
|
hbFeature ({ "calt", 0 }),
|
||||||
|
hbFeature ({ "clig", 0 }),
|
||||||
|
hbFeature ({ "dlig", 0 }),
|
||||||
|
hbFeature ({ "hlig", 0 }),
|
||||||
|
hbFeature ({ "liga", 0 })
|
||||||
|
};
|
||||||
|
|
||||||
|
auto result = getHarfbuzzFeatures (input, LigatureEnabledState::disabled);
|
||||||
|
|
||||||
|
expect (std::equal (result.begin(),
|
||||||
|
result.end(),
|
||||||
|
std::begin (expected),
|
||||||
|
std::end (expected),
|
||||||
|
compare));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Disabling ligatures appends ligature features in a disabled state to an empty feature set");
|
||||||
|
{
|
||||||
|
static constexpr hb_feature_t expected[] =
|
||||||
|
{
|
||||||
|
hbFeature ({ "calt", 0 }),
|
||||||
|
hbFeature ({ "clig", 0 }),
|
||||||
|
hbFeature ({ "dlig", 0 }),
|
||||||
|
hbFeature ({ "hlig", 0 }),
|
||||||
|
hbFeature ({ "liga", 0 })
|
||||||
|
};
|
||||||
|
|
||||||
|
auto result = getHarfbuzzFeatures ({}, LigatureEnabledState::disabled);
|
||||||
|
|
||||||
|
expect (std::equal (result.begin(),
|
||||||
|
result.end(),
|
||||||
|
std::begin (expected),
|
||||||
|
std::end (expected),
|
||||||
|
compare));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Enabling ligatures has no effect on ligature features in feature set");
|
||||||
|
{
|
||||||
|
static constexpr FontFeatureSetting featureSet[] =
|
||||||
|
{
|
||||||
|
FontFeatureSetting { "calt", 1 },
|
||||||
|
FontFeatureSetting { "clig", 0 },
|
||||||
|
FontFeatureSetting { "dlig", 1 },
|
||||||
|
FontFeatureSetting { "hlig", 0 },
|
||||||
|
FontFeatureSetting { "liga", 1 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr hb_feature_t expected[] =
|
||||||
|
{
|
||||||
|
hbFeature ({ "calt", 1 }),
|
||||||
|
hbFeature ({ "clig", 0 }),
|
||||||
|
hbFeature ({ "dlig", 1 }),
|
||||||
|
hbFeature ({ "hlig", 0 }),
|
||||||
|
hbFeature ({ "liga", 1 })
|
||||||
|
};
|
||||||
|
|
||||||
|
auto result = getHarfbuzzFeatures (featureSet, LigatureEnabledState::normal);
|
||||||
|
|
||||||
|
expect (std::equal (result.begin(),
|
||||||
|
result.end(),
|
||||||
|
std::begin (expected),
|
||||||
|
std::end (expected),
|
||||||
|
compare));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Only ligature features are disabled in an existing feature set");
|
||||||
|
{
|
||||||
|
static constexpr FontFeatureSetting featureSet[] =
|
||||||
|
{
|
||||||
|
FontFeatureSetting { "calt", 1 },
|
||||||
|
FontFeatureSetting { "fak1", 0 },
|
||||||
|
FontFeatureSetting { "fak2", 1 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr hb_feature_t expected[] =
|
||||||
|
{
|
||||||
|
hbFeature ({ "calt", 0 }),
|
||||||
|
hbFeature ({ "clig", 0 }),
|
||||||
|
hbFeature ({ "dlig", 0 }),
|
||||||
|
hbFeature ({ "fak1", 0 }),
|
||||||
|
hbFeature ({ "fak2", 1 }),
|
||||||
|
hbFeature ({ "hlig", 0 }),
|
||||||
|
hbFeature ({ "liga", 0 })
|
||||||
|
};
|
||||||
|
|
||||||
|
auto result = getHarfbuzzFeatures (featureSet, LigatureEnabledState::disabled);
|
||||||
|
|
||||||
|
expect (std::equal (result.begin(),
|
||||||
|
result.end(),
|
||||||
|
std::begin (expected),
|
||||||
|
std::end (expected),
|
||||||
|
compare));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("An empty feature set is not mutated when ligatures are enabled");
|
||||||
|
{
|
||||||
|
auto result = getHarfbuzzFeatures ({}, LigatureEnabledState::normal);
|
||||||
|
expect (result.empty());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static SimpleShapedTextTests simpleShapedTextTests;
|
static SimpleShapedTextTests simpleShapedTextTests;
|
||||||
|
static HarfbuzzFontFeatureTests harfbuzzFontFeatureTests;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -268,6 +268,19 @@ public:
|
||||||
bool getUnderline() const { return options.getUnderline(); }
|
bool getUnderline() const { return options.getUnderline(); }
|
||||||
bool getFallbackEnabled() const { return options.getFallbackEnabled(); }
|
bool getFallbackEnabled() const { return options.getFallbackEnabled(); }
|
||||||
TypefaceMetricsKind getMetricsKind() const { return options.getMetricsKind(); }
|
TypefaceMetricsKind getMetricsKind() const { return options.getMetricsKind(); }
|
||||||
|
auto getFeatureSettings() const { return options.getFeatureSettings(); }
|
||||||
|
|
||||||
|
void setFeatureSetting (const FontFeatureSetting& feature)
|
||||||
|
{
|
||||||
|
jassert (getReferenceCount() == 1);
|
||||||
|
options = options.withFeatureSetting (feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeFeatureSetting (FontFeatureTag feature)
|
||||||
|
{
|
||||||
|
jassert (getReferenceCount() == 1);
|
||||||
|
options = options.withFeatureRemoved (feature);
|
||||||
|
}
|
||||||
|
|
||||||
std::optional<float> getAscentOverride() const { return options.getAscentOverride(); }
|
std::optional<float> getAscentOverride() const { return options.getAscentOverride(); }
|
||||||
std::optional<float> getDescentOverride() const { return options.getDescentOverride(); }
|
std::optional<float> getDescentOverride() const { return options.getDescentOverride(); }
|
||||||
|
|
@ -728,6 +741,7 @@ std::optional<float> Font::getAscentOverride() const noexcept
|
||||||
|
|
||||||
void Font::setAscentOverride (std::optional<float> x)
|
void Font::setAscentOverride (std::optional<float> x)
|
||||||
{
|
{
|
||||||
|
dupeInternalIfShared();
|
||||||
font->setAscentOverride (x);
|
font->setAscentOverride (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -738,6 +752,7 @@ std::optional<float> Font::getDescentOverride() const noexcept
|
||||||
|
|
||||||
void Font::setDescentOverride (std::optional<float> x)
|
void Font::setDescentOverride (std::optional<float> x)
|
||||||
{
|
{
|
||||||
|
dupeInternalIfShared();
|
||||||
font->setDescentOverride (x);
|
font->setDescentOverride (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -750,6 +765,23 @@ bool Font::isUnderlined() const noexcept { return font->getUnderline(); }
|
||||||
|
|
||||||
TypefaceMetricsKind Font::getMetricsKind() const noexcept { return font->getMetricsKind(); }
|
TypefaceMetricsKind Font::getMetricsKind() const noexcept { return font->getMetricsKind(); }
|
||||||
|
|
||||||
|
Span<const FontFeatureSetting> Font::getFeatureSettings() const&
|
||||||
|
{
|
||||||
|
return font->getFeatureSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Font::setFeatureSetting (FontFeatureSetting featureSetting)
|
||||||
|
{
|
||||||
|
dupeInternalIfShared();
|
||||||
|
font->setFeatureSetting (featureSetting);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Font::removeFeatureSetting (FontFeatureTag featureToRemove)
|
||||||
|
{
|
||||||
|
dupeInternalIfShared();
|
||||||
|
font->removeFeatureSetting (featureToRemove);
|
||||||
|
}
|
||||||
|
|
||||||
void Font::setBold (const bool shouldBeBold)
|
void Font::setBold (const bool shouldBeBold)
|
||||||
{
|
{
|
||||||
auto flags = getStyleFlags();
|
auto flags = getStyleFlags();
|
||||||
|
|
|
||||||
|
|
@ -378,6 +378,37 @@ public:
|
||||||
/** Returns the kind of metrics used by this Font. */
|
/** Returns the kind of metrics used by this Font. */
|
||||||
TypefaceMetricsKind getMetricsKind() const noexcept;
|
TypefaceMetricsKind getMetricsKind() const noexcept;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Returns an Span view of the features configured for this font instance.
|
||||||
|
|
||||||
|
Use Typeface::getSupportedFeatures() to determine what features this font
|
||||||
|
supports.
|
||||||
|
|
||||||
|
@see setFeatureEnabled, setFeatureDisabled, removeFeature,
|
||||||
|
Typeface::getSupportedFeatures
|
||||||
|
*/
|
||||||
|
Span<const FontFeatureSetting> getFeatureSettings() const&;
|
||||||
|
Span<const FontFeatureSetting> getFeatureSettings() const&& = delete;
|
||||||
|
|
||||||
|
/** Enables or disables a font feature.
|
||||||
|
|
||||||
|
Use Typeface::getSupportedFeatures() to determine what features this font
|
||||||
|
supports.
|
||||||
|
|
||||||
|
@see setFeatureEnabled, setFeatureDisabled, removeFeature, Typeface::getSupportedFeatures
|
||||||
|
*/
|
||||||
|
void setFeatureSetting (FontFeatureSetting featureSetting);
|
||||||
|
|
||||||
|
/** Removes a specific feature setting from this font.
|
||||||
|
|
||||||
|
If `featureToRemove` corresponds to a feature that is typically enabled by default (e.g.,
|
||||||
|
"calt" for contextual alternates, "liga" for standard ligatures), calling this method will
|
||||||
|
reset it to its default-enabled state.
|
||||||
|
|
||||||
|
@see setFeatureEnabled, setFeatureDisabled, Typeface::getSupportedFeatures
|
||||||
|
*/
|
||||||
|
void removeFeatureSetting (FontFeatureTag featureToRemove);
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Returns the font's horizontal scale.
|
/** Returns the font's horizontal scale.
|
||||||
A value of 1.0 is the normal scale, less than this will be narrower, greater
|
A value of 1.0 is the normal scale, less than this will be narrower, greater
|
||||||
|
|
|
||||||
65
modules/juce_graphics/fonts/juce_FontFeatures.cpp
Normal file
65
modules/juce_graphics/fonts/juce_FontFeatures.cpp
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE framework.
|
||||||
|
Copyright (c) Raw Material Software Limited
|
||||||
|
|
||||||
|
JUCE is an open source framework subject to commercial or open source
|
||||||
|
licensing.
|
||||||
|
|
||||||
|
By downloading, installing, or using the JUCE framework, or combining the
|
||||||
|
JUCE framework with any other source code, object code, content or any other
|
||||||
|
copyrightable work, you agree to the terms of the JUCE End User Licence
|
||||||
|
Agreement, and all incorporated terms including the JUCE Privacy Policy and
|
||||||
|
the JUCE Website Terms of Service, as applicable, which will bind you. If you
|
||||||
|
do not agree to the terms of these agreements, we will not license the JUCE
|
||||||
|
framework to you, and you must discontinue the installation or download
|
||||||
|
process and cease use of the JUCE framework.
|
||||||
|
|
||||||
|
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
|
||||||
|
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
|
||||||
|
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
You may also use this code under the terms of the AGPLv3:
|
||||||
|
https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
|
||||||
|
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
|
||||||
|
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
|
||||||
|
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
FontFeatureTag FontFeatureTag::fromString (const String& string)
|
||||||
|
{
|
||||||
|
if (string.getNumBytesAsUTF8() != 4)
|
||||||
|
{
|
||||||
|
jassertfalse;
|
||||||
|
return FontFeatureTag (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
char characters[5]{};
|
||||||
|
memcpy (characters, string.toRawUTF8(), 4);
|
||||||
|
return FontFeatureTag { characters };
|
||||||
|
}
|
||||||
|
|
||||||
|
String FontFeatureTag::toString() const
|
||||||
|
{
|
||||||
|
const char characters[5]
|
||||||
|
{
|
||||||
|
static_cast<char> (tag >> 24),
|
||||||
|
static_cast<char> (tag >> 16),
|
||||||
|
static_cast<char> (tag >> 8),
|
||||||
|
static_cast<char> (tag),
|
||||||
|
'\0'
|
||||||
|
};
|
||||||
|
|
||||||
|
return String { characters };
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace juce
|
||||||
143
modules/juce_graphics/fonts/juce_FontFeatures.h
Normal file
143
modules/juce_graphics/fonts/juce_FontFeatures.h
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE framework.
|
||||||
|
Copyright (c) Raw Material Software Limited
|
||||||
|
|
||||||
|
JUCE is an open source framework subject to commercial or open source
|
||||||
|
licensing.
|
||||||
|
|
||||||
|
By downloading, installing, or using the JUCE framework, or combining the
|
||||||
|
JUCE framework with any other source code, object code, content or any other
|
||||||
|
copyrightable work, you agree to the terms of the JUCE End User Licence
|
||||||
|
Agreement, and all incorporated terms including the JUCE Privacy Policy and
|
||||||
|
the JUCE Website Terms of Service, as applicable, which will bind you. If you
|
||||||
|
do not agree to the terms of these agreements, we will not license the JUCE
|
||||||
|
framework to you, and you must discontinue the installation or download
|
||||||
|
process and cease use of the JUCE framework.
|
||||||
|
|
||||||
|
JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
|
||||||
|
JUCE Privacy Policy: https://juce.com/juce-privacy-policy
|
||||||
|
JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
You may also use this code under the terms of the AGPLv3:
|
||||||
|
https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
|
||||||
|
THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
|
||||||
|
WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
|
||||||
|
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
/** Represents a single OpenType font feature.
|
||||||
|
|
||||||
|
OpenType font features are typographic options that can be enabled or disabled
|
||||||
|
to control text rendering behavior. Each feature is identified by a
|
||||||
|
four-character tag (like 'liga' for standard ligatures or 'smcp' for small caps).
|
||||||
|
These features allow fine-grained control over how text is displayed, including
|
||||||
|
ligatures, number styles, stylistic alternates, and positioning adjustments.
|
||||||
|
|
||||||
|
The tag must be exactly 4 characters long.
|
||||||
|
|
||||||
|
@see FontOptions, Font
|
||||||
|
|
||||||
|
@tags{Graphics}
|
||||||
|
*/
|
||||||
|
class JUCE_API FontFeatureTag final
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Constructs a feature from the specified tag string. */
|
||||||
|
constexpr FontFeatureTag (const char (&string)[5])
|
||||||
|
: tag { (uint32) string[0] << 24
|
||||||
|
| (uint32) string[1] << 16
|
||||||
|
| (uint32) string[2] << 8
|
||||||
|
| (uint32) string[3] }
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Constructs a feature from the specified tag value. */
|
||||||
|
constexpr explicit FontFeatureTag (uint32 tagValue)
|
||||||
|
: tag (tagValue)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a new FontFeature with the specified tag. */
|
||||||
|
[[nodiscard]] static FontFeatureTag fromString (const String& tagString);
|
||||||
|
|
||||||
|
/** Returns a string representation of this tag. */
|
||||||
|
String toString() const;
|
||||||
|
|
||||||
|
/** Returns the Harfbuzz compatible OpenType tag as an unsigned 32-bit integer. */
|
||||||
|
constexpr uint32 getTag() const { return tag; }
|
||||||
|
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator< (FontFeatureTag other) const { return tag < other.tag; }
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator<= (FontFeatureTag other) const { return tag <= other.tag; }
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator> (FontFeatureTag other) const { return tag > other.tag; }
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator>= (FontFeatureTag other) const { return tag >= other.tag; }
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator== (FontFeatureTag other) const { return tag == other.tag; }
|
||||||
|
/** Comparison based on tag value. */
|
||||||
|
[[nodiscard]] constexpr bool operator!= (FontFeatureTag other) const { return tag != other.tag; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
FontFeatureTag() = default;
|
||||||
|
uint32 tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Represents a single OpenType font feature setting.
|
||||||
|
|
||||||
|
A font feature setting combines a FontFeatureTag with an optional value that
|
||||||
|
controls the behavior of that feature. For example, a 'liga' (standard ligatures)
|
||||||
|
feature can be enabled (value=1) or disabled (value=0), while other features like
|
||||||
|
'salt' (stylistic alternates) might accept a range of values to select specific
|
||||||
|
alternates.
|
||||||
|
|
||||||
|
@see FontFeatureTag, FontOptions, Font
|
||||||
|
|
||||||
|
@tags{Graphics}
|
||||||
|
*/
|
||||||
|
class JUCE_API FontFeatureSetting final
|
||||||
|
{
|
||||||
|
constexpr auto tie() const { return std::tuple (tag, value); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
/** Common feature values for convenience. */
|
||||||
|
/** Enable this feature (value=1). */
|
||||||
|
static constexpr auto featureEnabled = 1;
|
||||||
|
/** Disable this feature (value=0). */
|
||||||
|
static constexpr auto featureDisabled = 0;
|
||||||
|
|
||||||
|
/** Constructs a feature setting with the specified tag and optional value. */
|
||||||
|
constexpr FontFeatureSetting (FontFeatureTag featureTag, uint32 featureValue) noexcept
|
||||||
|
: tag (featureTag),
|
||||||
|
value (featureValue)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] constexpr bool operator< (const FontFeatureSetting& other) const { return tie() < other.tie(); }
|
||||||
|
[[nodiscard]] constexpr bool operator<= (const FontFeatureSetting& other) const { return tie() <= other.tie(); }
|
||||||
|
[[nodiscard]] constexpr bool operator> (const FontFeatureSetting& other) const { return tie() > other.tie(); }
|
||||||
|
[[nodiscard]] constexpr bool operator>= (const FontFeatureSetting& other) const { return tie() >= other.tie(); }
|
||||||
|
[[nodiscard]] constexpr bool operator== (const FontFeatureSetting& other) const { return tie() == other.tie(); }
|
||||||
|
[[nodiscard]] constexpr bool operator!= (const FontFeatureSetting& other) const { return tie() != other.tie(); }
|
||||||
|
|
||||||
|
/** The OpenType feature tag. */
|
||||||
|
FontFeatureTag tag;
|
||||||
|
|
||||||
|
/** The value for this feature.
|
||||||
|
Common values are 0 (featureDisabled) and 1 (featureEnabled), but some features
|
||||||
|
support additional values for specific behaviors.
|
||||||
|
*/
|
||||||
|
uint32 value;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -92,6 +92,7 @@ auto FontOptions::tie() const
|
||||||
style,
|
style,
|
||||||
typeface.get(),
|
typeface.get(),
|
||||||
fallbacks,
|
fallbacks,
|
||||||
|
features,
|
||||||
metricsKind,
|
metricsKind,
|
||||||
ascentOverride,
|
ascentOverride,
|
||||||
descentOverride,
|
descentOverride,
|
||||||
|
|
@ -103,6 +104,42 @@ auto FontOptions::tie() const
|
||||||
underlined);
|
underlined);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct FontFeatureSettingSortHelper
|
||||||
|
{
|
||||||
|
bool operator() (FontFeatureSetting a, FontFeatureSetting b) const
|
||||||
|
{
|
||||||
|
return a.tag < b.tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator() (FontFeatureTag a, FontFeatureSetting b) const
|
||||||
|
{
|
||||||
|
return a < b.tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator() (FontFeatureSetting a, FontFeatureTag b) const
|
||||||
|
{
|
||||||
|
return a.tag < b;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
FontOptions FontOptions::withFeatureSetting (FontFeatureSetting newSetting) const
|
||||||
|
{
|
||||||
|
auto copy = *this;
|
||||||
|
|
||||||
|
OrderedContainerHelpers::insertOrAssign (copy.features, newSetting, FontFeatureSettingSortHelper{});
|
||||||
|
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
FontOptions FontOptions::withFeatureRemoved (FontFeatureTag featureTag) const
|
||||||
|
{
|
||||||
|
auto copy = *this;
|
||||||
|
|
||||||
|
OrderedContainerHelpers::remove (copy.features, featureTag, FontFeatureSettingSortHelper{});
|
||||||
|
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
bool FontOptions::operator== (const FontOptions& other) const { return tie() == other.tie(); }
|
bool FontOptions::operator== (const FontOptions& other) const { return tie() == other.tie(); }
|
||||||
bool FontOptions::operator!= (const FontOptions& other) const { return tie() != other.tie(); }
|
bool FontOptions::operator!= (const FontOptions& other) const { return tie() != other.tie(); }
|
||||||
bool FontOptions::operator< (const FontOptions& other) const { return tie() < other.tie(); }
|
bool FontOptions::operator< (const FontOptions& other) const { return tie() < other.tie(); }
|
||||||
|
|
@ -110,4 +147,83 @@ bool FontOptions::operator<= (const FontOptions& other) const { return tie() <=
|
||||||
bool FontOptions::operator> (const FontOptions& other) const { return tie() > other.tie(); }
|
bool FontOptions::operator> (const FontOptions& other) const { return tie() > other.tie(); }
|
||||||
bool FontOptions::operator>= (const FontOptions& other) const { return tie() >= other.tie(); }
|
bool FontOptions::operator>= (const FontOptions& other) const { return tie() >= other.tie(); }
|
||||||
|
|
||||||
|
#if JUCE_UNIT_TESTS
|
||||||
|
|
||||||
|
class FontFeatureContainerTests : public UnitTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FontFeatureContainerTests() : UnitTest ("FontFeatureContainerTests", UnitTestCategories::text)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
beginTest ("Features can be enabled");
|
||||||
|
{
|
||||||
|
const auto options = FontOptions{}.withFeatureEnabled ("clig");
|
||||||
|
|
||||||
|
expectEquals ((int) options.getFeatureSettings().size(), 1);
|
||||||
|
expect (compareFeatureLists (options.getFeatureSettings(),
|
||||||
|
{
|
||||||
|
FontFeatureSetting ("clig", FontFeatureSetting::featureEnabled)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Features can be disabled");
|
||||||
|
{
|
||||||
|
const auto options = FontOptions{}.withFeatureDisabled ("clig");
|
||||||
|
|
||||||
|
expectEquals ((int) options.getFeatureSettings().size(), 1);
|
||||||
|
expect (compareFeatureLists (options.getFeatureSettings(),
|
||||||
|
{
|
||||||
|
FontFeatureSetting ("clig", FontFeatureSetting::featureDisabled)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Features can be removed");
|
||||||
|
{
|
||||||
|
const auto options = FontOptions{}.withFeatureEnabled ("clig")
|
||||||
|
.withFeatureRemoved ("clig");
|
||||||
|
|
||||||
|
expectEquals ((int) options.getFeatureSettings().size(), 0);
|
||||||
|
expect (compareFeatureLists (options.getFeatureSettings(), {}));
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Duplicate features are not allowed");
|
||||||
|
{
|
||||||
|
const auto options = FontOptions{}.withFeatureEnabled ("clig")
|
||||||
|
.withFeatureEnabled ("clig");
|
||||||
|
|
||||||
|
expectEquals ((int) options.getFeatureSettings().size(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Features are always sorted by tag");
|
||||||
|
{
|
||||||
|
const auto options = FontOptions{}.withFeatureEnabled ("clig")
|
||||||
|
.withFeatureDisabled ("blig")
|
||||||
|
.withFeatureEnabled ("alig");
|
||||||
|
|
||||||
|
expectEquals ((int) options.getFeatureSettings().size(), 3);
|
||||||
|
expect (compareFeatureLists (options.getFeatureSettings(),
|
||||||
|
{
|
||||||
|
FontFeatureSetting ("alig", FontFeatureSetting::featureEnabled),
|
||||||
|
FontFeatureSetting ("blig", FontFeatureSetting::featureDisabled),
|
||||||
|
FontFeatureSetting ("clig", FontFeatureSetting::featureEnabled)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static bool compareFeatureLists (Span<const FontFeatureSetting> input,
|
||||||
|
std::initializer_list<const FontFeatureSetting> expected)
|
||||||
|
{
|
||||||
|
return std::equal (input.begin(), input.end(), expected.begin(), expected.end());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static FontFeatureContainerTests fontFeatureContainerTests;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
} // namespace juce
|
} // namespace juce
|
||||||
|
|
|
||||||
|
|
@ -176,6 +176,23 @@ public:
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] FontOptions withDescentOverride (std::optional<float> x) const { return withMember (*this, &FontOptions::descentOverride, x.value_or (-1.0f)); }
|
[[nodiscard]] FontOptions withDescentOverride (std::optional<float> x) const { return withMember (*this, &FontOptions::descentOverride, x.value_or (-1.0f)); }
|
||||||
|
|
||||||
|
/** Returns a copy of these options with the specified font feature setting added or updated. */
|
||||||
|
[[nodiscard]] FontOptions withFeatureSetting (FontFeatureSetting featureSetting) const;
|
||||||
|
|
||||||
|
/** Returns a copy of these options with the specified feature removed.
|
||||||
|
|
||||||
|
If the `featureTag` corresponds to a recognised default-enabled font feature (e.g., "calt",
|
||||||
|
"ccmp", "liga", "locl", "mark", "mkmk", "rlig"), it's setting will be reset to its default
|
||||||
|
state.
|
||||||
|
*/
|
||||||
|
[[nodiscard]] FontOptions withFeatureRemoved (FontFeatureTag featureTag) const;
|
||||||
|
|
||||||
|
/** Returns a copy of these options with the specified feature enabled. */
|
||||||
|
[[nodiscard]] FontOptions withFeatureEnabled (FontFeatureTag tag) const { return withFeatureSetting ({ tag, FontFeatureSetting::featureEnabled }); }
|
||||||
|
|
||||||
|
/** Returns a copy of these options with the specified feature disabled. */
|
||||||
|
[[nodiscard]] FontOptions withFeatureDisabled (FontFeatureTag tag) const { return withFeatureSetting ({ tag, FontFeatureSetting::featureDisabled }); }
|
||||||
|
|
||||||
/** @see withName() */
|
/** @see withName() */
|
||||||
[[nodiscard]] auto getName() const { return name; }
|
[[nodiscard]] auto getName() const { return name; }
|
||||||
/** @see withStyle() */
|
/** @see withStyle() */
|
||||||
|
|
@ -203,6 +220,10 @@ public:
|
||||||
/** @see withDescentOverride() */
|
/** @see withDescentOverride() */
|
||||||
[[nodiscard]] auto getDescentOverride() const { return descentOverride >= 0.0f ? std::make_optional (descentOverride) : std::nullopt; }
|
[[nodiscard]] auto getDescentOverride() const { return descentOverride >= 0.0f ? std::make_optional (descentOverride) : std::nullopt; }
|
||||||
|
|
||||||
|
/** @see withFeatureSetting() */
|
||||||
|
[[nodiscard]] Span<const FontFeatureSetting> getFeatureSettings() const& { return features; }
|
||||||
|
[[nodiscard]] Span<const FontFeatureSetting> getFeatureSettings() const&& = delete;
|
||||||
|
|
||||||
/** Equality operator. */
|
/** Equality operator. */
|
||||||
[[nodiscard]] bool operator== (const FontOptions& other) const;
|
[[nodiscard]] bool operator== (const FontOptions& other) const;
|
||||||
/** Inequality operator. */
|
/** Inequality operator. */
|
||||||
|
|
@ -222,6 +243,7 @@ private:
|
||||||
String name, style;
|
String name, style;
|
||||||
Typeface::Ptr typeface;
|
Typeface::Ptr typeface;
|
||||||
std::vector<String> fallbacks;
|
std::vector<String> fallbacks;
|
||||||
|
std::vector<FontFeatureSetting> features;
|
||||||
TypefaceMetricsKind metricsKind { TypefaceMetricsKind::portable };
|
TypefaceMetricsKind metricsKind { TypefaceMetricsKind::portable };
|
||||||
float height = -1.0f;
|
float height = -1.0f;
|
||||||
float pointHeight = -1.0f;
|
float pointHeight = -1.0f;
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,8 @@ public:
|
||||||
float getBottom() const { return y + font.getDescent(); }
|
float getBottom() const { return y + font.getDescent(); }
|
||||||
/** Returns the bounds of the glyph. */
|
/** Returns the bounds of the glyph. */
|
||||||
Rectangle<float> getBounds() const { return { x, getTop(), w, font.getHeight() }; }
|
Rectangle<float> getBounds() const { return { x, getTop(), w, font.getHeight() }; }
|
||||||
|
/** Returns the typeface glyph index for the glyph. */
|
||||||
|
int getGlyphIndex() const { return glyph; }
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Shifts the glyph's position by a relative amount. */
|
/** Shifts the glyph's position by a relative amount. */
|
||||||
|
|
|
||||||
|
|
@ -727,6 +727,50 @@ void Typeface::getGlyphPositions (TypefaceMetricsKind kind,
|
||||||
xOffsets.add (width);
|
xOffsets.add (width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<FontFeatureTag> Typeface::getSupportedFeatures() const
|
||||||
|
{
|
||||||
|
std::vector<FontFeatureTag> features;
|
||||||
|
|
||||||
|
static constexpr hb_tag_t tagTables[]
|
||||||
|
{
|
||||||
|
HB_OT_TAG_GPOS,
|
||||||
|
HB_OT_TAG_GSUB
|
||||||
|
};
|
||||||
|
|
||||||
|
auto* face = hb_font_get_face (getNativeDetails().getFont());
|
||||||
|
|
||||||
|
for (auto table : tagTables)
|
||||||
|
{
|
||||||
|
auto featureCount = hb_ot_layout_table_get_feature_tags (face,
|
||||||
|
table,
|
||||||
|
0,
|
||||||
|
nullptr,
|
||||||
|
nullptr);
|
||||||
|
|
||||||
|
if (featureCount == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
std::vector<hb_tag_t> arr;
|
||||||
|
arr.resize (featureCount);
|
||||||
|
features.reserve (features.size() + arr.size());
|
||||||
|
hb_ot_layout_table_get_feature_tags (face,
|
||||||
|
table,
|
||||||
|
0,
|
||||||
|
&featureCount,
|
||||||
|
arr.data());
|
||||||
|
|
||||||
|
std::transform (arr.begin(), arr.end(), std::back_inserter (features), [] (hb_tag_t tag)
|
||||||
|
{
|
||||||
|
return FontFeatureTag { (uint32) tag };
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sort (features.begin(), features.end());
|
||||||
|
features.erase (std::unique (features.begin(), features.end()), features.end());
|
||||||
|
|
||||||
|
return features;
|
||||||
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
#if JUCE_UNIT_TESTS
|
#if JUCE_UNIT_TESTS
|
||||||
|
|
@ -1009,11 +1053,151 @@ public:
|
||||||
R"({"name":"Karla_Regular_Typo_Off_Offsets_Off","os":1024,"ascent":0.798751175403595,"descent":0.201248824596405,"heightToPoints":0.798751175403595,"A":[{"g":116,"a":0.3611911535263062},{"g":104,"a":0.5797309875488281},{"g":101,"a":0.4932756423950195},{"g":32,"a":0.228145956993103},{"g":113,"a":0.5614793300628662},{"g":117,"a":0.5816521644592285},{"g":105,"a":0.2862632274627686},{"g":99,"a":0.4956772327423096},{"g":107,"a":0.5413064956665039},{"g":32,"a":0.2281460762023926},{"g":98,"a":0.5691642761230469},{"g":114,"a":0.3472623825073242},{"g":111,"a":0.5249757766723633},{"g":119,"a":0.6959652900695801},{"g":110,"a":0.5797309875488281},{"g":32,"a":0.2281460762023926},{"g":102,"a":0.3290104866027832},{"g":111,"a":0.5249757766723633},{"g":120,"a":0.4913539886474609},{"g":32,"a":0.2281455993652344},{"g":106,"a":0.3011531829833984},{"g":117,"a":0.5816526412963867},{"g":109,"a":0.8986549377441406},{"g":112,"a":0.5614795684814453},{"g":115,"a":0.5048027038574219},{"g":32,"a":0.2281455993652344},{"g":111,"a":0.5249757766723633},{"g":118,"a":0.4827089309692383},{"g":101,"a":0.4932756423950195},{"g":114,"a":0.3472623825073242},{"g":32,"a":0.2281455993652344},{"g":116,"a":0.3611907958984375},{"g":104,"a":0.5797309875488281},{"g":101,"a":0.4932756423950195},{"g":32,"a":0.2281455993652344},{"g":108,"a":0.2689723968505859},{"g":97,"a":0.5288181304931641},{"g":122,"a":0.4558124542236328},{"g":121,"a":0.4471664428710938},{"g":32,"a":0.2281455993652344},{"g":100,"a":0.5691642761230469},{"g":111,"a":0.5249767303466797},{"g":103,"a":0.542266845703125}],"B":[{"g":83,"a":0.5806916356086731},{"g":80,"a":0.5317003130912781},{"g":72,"a":0.6421709060668945},{"g":73,"a":0.2689721584320068},{"g":78,"a":0.6570603847503662},{"g":88,"a":0.616234302520752},{"g":32,"a":0.2281460762023926},{"g":79,"a":0.6200766563415527},{"g":70,"a":0.5033621788024902},{"g":32,"a":0.2281460762023926},{"g":66,"a":0.5970220565795898},{"g":76,"a":0.4490876197814941},{"g":65,"a":0.5518732070922852},{"g":67,"a":0.5888566970825195},{"g":75,"a":0.5835733413696289},{"g":32,"a":0.2281460762023926},{"g":81,"a":0.6258406639099121},{"g":85,"a":0.6272811889648438},{"g":65,"a":0.5518732070922852},{"g":82,"a":0.5883769989013672},{"g":84,"a":0.4807872772216797},{"g":90,"a":0.5682039260864258},{"g":32,"a":0.2281455993652344},{"g":74,"a":0.387608528137207},{"g":85,"a":0.6272811889648438},{"g":68,"a":0.6340055465698242},{"g":71,"a":0.6186361312866211},{"g":69,"a":0.5398654937744141},{"g":32,"a":0.2281455993652344},{"g":77,"a":0.8136405944824219},{"g":89,"a":0.5268974304199219},{"g":32,"a":0.2281455993652344},{"g":86,"a":0.5403461456298828},{"g":79,"a":0.6200771331787109},{"g":87,"a":0.8587894439697266}]})",
|
R"({"name":"Karla_Regular_Typo_Off_Offsets_Off","os":1024,"ascent":0.798751175403595,"descent":0.201248824596405,"heightToPoints":0.798751175403595,"A":[{"g":116,"a":0.3611911535263062},{"g":104,"a":0.5797309875488281},{"g":101,"a":0.4932756423950195},{"g":32,"a":0.228145956993103},{"g":113,"a":0.5614793300628662},{"g":117,"a":0.5816521644592285},{"g":105,"a":0.2862632274627686},{"g":99,"a":0.4956772327423096},{"g":107,"a":0.5413064956665039},{"g":32,"a":0.2281460762023926},{"g":98,"a":0.5691642761230469},{"g":114,"a":0.3472623825073242},{"g":111,"a":0.5249757766723633},{"g":119,"a":0.6959652900695801},{"g":110,"a":0.5797309875488281},{"g":32,"a":0.2281460762023926},{"g":102,"a":0.3290104866027832},{"g":111,"a":0.5249757766723633},{"g":120,"a":0.4913539886474609},{"g":32,"a":0.2281455993652344},{"g":106,"a":0.3011531829833984},{"g":117,"a":0.5816526412963867},{"g":109,"a":0.8986549377441406},{"g":112,"a":0.5614795684814453},{"g":115,"a":0.5048027038574219},{"g":32,"a":0.2281455993652344},{"g":111,"a":0.5249757766723633},{"g":118,"a":0.4827089309692383},{"g":101,"a":0.4932756423950195},{"g":114,"a":0.3472623825073242},{"g":32,"a":0.2281455993652344},{"g":116,"a":0.3611907958984375},{"g":104,"a":0.5797309875488281},{"g":101,"a":0.4932756423950195},{"g":32,"a":0.2281455993652344},{"g":108,"a":0.2689723968505859},{"g":97,"a":0.5288181304931641},{"g":122,"a":0.4558124542236328},{"g":121,"a":0.4471664428710938},{"g":32,"a":0.2281455993652344},{"g":100,"a":0.5691642761230469},{"g":111,"a":0.5249767303466797},{"g":103,"a":0.542266845703125}],"B":[{"g":83,"a":0.5806916356086731},{"g":80,"a":0.5317003130912781},{"g":72,"a":0.6421709060668945},{"g":73,"a":0.2689721584320068},{"g":78,"a":0.6570603847503662},{"g":88,"a":0.616234302520752},{"g":32,"a":0.2281460762023926},{"g":79,"a":0.6200766563415527},{"g":70,"a":0.5033621788024902},{"g":32,"a":0.2281460762023926},{"g":66,"a":0.5970220565795898},{"g":76,"a":0.4490876197814941},{"g":65,"a":0.5518732070922852},{"g":67,"a":0.5888566970825195},{"g":75,"a":0.5835733413696289},{"g":32,"a":0.2281460762023926},{"g":81,"a":0.6258406639099121},{"g":85,"a":0.6272811889648438},{"g":65,"a":0.5518732070922852},{"g":82,"a":0.5883769989013672},{"g":84,"a":0.4807872772216797},{"g":90,"a":0.5682039260864258},{"g":32,"a":0.2281455993652344},{"g":74,"a":0.387608528137207},{"g":85,"a":0.6272811889648438},{"g":68,"a":0.6340055465698242},{"g":71,"a":0.6186361312866211},{"g":69,"a":0.5398654937744141},{"g":32,"a":0.2281455993652344},{"g":77,"a":0.8136405944824219},{"g":89,"a":0.5268974304199219},{"g":32,"a":0.2281455993652344},{"g":86,"a":0.5403461456298828},{"g":79,"a":0.6200771331787109},{"g":87,"a":0.8587894439697266}]})",
|
||||||
R"({"name":"Karla_Regular_Typo_On_Offsets_Off","os":1024,"ascent":0.7691982984542847,"descent":0.2308017015457153,"heightToPoints":0.7691982984542847,"A":[{"g":116,"a":0.3172995746135712},{"g":104,"a":0.5092827081680298},{"g":101,"a":0.4333332777023315},{"g":32,"a":0.200421929359436},{"g":113,"a":0.4932489395141602},{"g":117,"a":0.5109704732894897},{"g":105,"a":0.2514767646789551},{"g":99,"a":0.4354431629180908},{"g":107,"a":0.4755275249481201},{"g":32,"a":0.2004220485687256},{"g":98,"a":0.5},{"g":114,"a":0.3050632476806641},{"g":111,"a":0.461181640625},{"g":119,"a":0.6113924980163574},{"g":110,"a":0.5092825889587402},{"g":32,"a":0.2004218101501465},{"g":102,"a":0.289029598236084},{"g":111,"a":0.461181640625},{"g":120,"a":0.431645393371582},{"g":32,"a":0.2004218101501465},{"g":106,"a":0.264556884765625},{"g":117,"a":0.5109701156616211},{"g":109,"a":0.7894515991210938},{"g":112,"a":0.4932489395141602},{"g":115,"a":0.4434595108032227},{"g":32,"a":0.2004222869873047},{"g":111,"a":0.461181640625},{"g":118,"a":0.4240503311157227},{"g":101,"a":0.4333333969116211},{"g":114,"a":0.3050632476806641},{"g":32,"a":0.2004222869873047},{"g":116,"a":0.3172998428344727},{"g":104,"a":0.5092830657958984},{"g":101,"a":0.4333333969116211},{"g":32,"a":0.2004222869873047},{"g":108,"a":0.2362871170043945},{"g":97,"a":0.4645566940307617},{"g":122,"a":0.4004220962524414},{"g":121,"a":0.392827033996582},{"g":32,"a":0.2004222869873047},{"g":100,"a":0.5},{"g":111,"a":0.4611806869506836},{"g":103,"a":0.4763717651367188}],"B":[{"g":83,"a":0.5101265907287598},{"g":80,"a":0.4670885801315308},{"g":72,"a":0.564134955406189},{"g":73,"a":0.2362868785858154},{"g":78,"a":0.5772151947021484},{"g":88,"a":0.5413501262664795},{"g":32,"a":0.2004220485687256},{"g":79,"a":0.5447256565093994},{"g":70,"a":0.4421942234039307},{"g":32,"a":0.2004218101501465},{"g":66,"a":0.524472713470459},{"g":76,"a":0.3945145606994629},{"g":65,"a":0.4848103523254395},{"g":67,"a":0.5172996520996094},{"g":75,"a":0.5126581192016602},{"g":32,"a":0.2004218101501465},{"g":81,"a":0.5497889518737793},{"g":85,"a":0.5510544776916504},{"g":65,"a":0.4848098754882812},{"g":82,"a":0.5168771743774414},{"g":84,"a":0.42236328125},{"g":90,"a":0.4991559982299805},{"g":32,"a":0.2004222869873047},{"g":74,"a":0.3405065536499023},{"g":85,"a":0.5510549545288086},{"g":68,"a":0.5569620132446289},{"g":71,"a":0.5434598922729492},{"g":69,"a":0.4742612838745117},{"g":32,"a":0.2004222869873047},{"g":77,"a":0.7147674560546875},{"g":89,"a":0.4628696441650391},{"g":32,"a":0.2004222869873047},{"g":86,"a":0.4746837615966797},{"g":79,"a":0.5447254180908203},{"g":87,"a":0.7544307708740234}]})",
|
R"({"name":"Karla_Regular_Typo_On_Offsets_Off","os":1024,"ascent":0.7691982984542847,"descent":0.2308017015457153,"heightToPoints":0.7691982984542847,"A":[{"g":116,"a":0.3172995746135712},{"g":104,"a":0.5092827081680298},{"g":101,"a":0.4333332777023315},{"g":32,"a":0.200421929359436},{"g":113,"a":0.4932489395141602},{"g":117,"a":0.5109704732894897},{"g":105,"a":0.2514767646789551},{"g":99,"a":0.4354431629180908},{"g":107,"a":0.4755275249481201},{"g":32,"a":0.2004220485687256},{"g":98,"a":0.5},{"g":114,"a":0.3050632476806641},{"g":111,"a":0.461181640625},{"g":119,"a":0.6113924980163574},{"g":110,"a":0.5092825889587402},{"g":32,"a":0.2004218101501465},{"g":102,"a":0.289029598236084},{"g":111,"a":0.461181640625},{"g":120,"a":0.431645393371582},{"g":32,"a":0.2004218101501465},{"g":106,"a":0.264556884765625},{"g":117,"a":0.5109701156616211},{"g":109,"a":0.7894515991210938},{"g":112,"a":0.4932489395141602},{"g":115,"a":0.4434595108032227},{"g":32,"a":0.2004222869873047},{"g":111,"a":0.461181640625},{"g":118,"a":0.4240503311157227},{"g":101,"a":0.4333333969116211},{"g":114,"a":0.3050632476806641},{"g":32,"a":0.2004222869873047},{"g":116,"a":0.3172998428344727},{"g":104,"a":0.5092830657958984},{"g":101,"a":0.4333333969116211},{"g":32,"a":0.2004222869873047},{"g":108,"a":0.2362871170043945},{"g":97,"a":0.4645566940307617},{"g":122,"a":0.4004220962524414},{"g":121,"a":0.392827033996582},{"g":32,"a":0.2004222869873047},{"g":100,"a":0.5},{"g":111,"a":0.4611806869506836},{"g":103,"a":0.4763717651367188}],"B":[{"g":83,"a":0.5101265907287598},{"g":80,"a":0.4670885801315308},{"g":72,"a":0.564134955406189},{"g":73,"a":0.2362868785858154},{"g":78,"a":0.5772151947021484},{"g":88,"a":0.5413501262664795},{"g":32,"a":0.2004220485687256},{"g":79,"a":0.5447256565093994},{"g":70,"a":0.4421942234039307},{"g":32,"a":0.2004218101501465},{"g":66,"a":0.524472713470459},{"g":76,"a":0.3945145606994629},{"g":65,"a":0.4848103523254395},{"g":67,"a":0.5172996520996094},{"g":75,"a":0.5126581192016602},{"g":32,"a":0.2004218101501465},{"g":81,"a":0.5497889518737793},{"g":85,"a":0.5510544776916504},{"g":65,"a":0.4848098754882812},{"g":82,"a":0.5168771743774414},{"g":84,"a":0.42236328125},{"g":90,"a":0.4991559982299805},{"g":32,"a":0.2004222869873047},{"g":74,"a":0.3405065536499023},{"g":85,"a":0.5510549545288086},{"g":68,"a":0.5569620132446289},{"g":71,"a":0.5434598922729492},{"g":69,"a":0.4742612838745117},{"g":32,"a":0.2004222869873047},{"g":77,"a":0.7147674560546875},{"g":89,"a":0.4628696441650391},{"g":32,"a":0.2004222869873047},{"g":86,"a":0.4746837615966797},{"g":79,"a":0.5447254180908203},{"g":87,"a":0.7544307708740234}]})",
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static TypefaceTests typefaceTests;
|
static TypefaceTests typefaceTests;
|
||||||
|
|
||||||
|
class FontFeatureTests : public UnitTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FontFeatureTests() : UnitTest ("Font Features", UnitTestCategories::graphics) {}
|
||||||
|
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
auto block = unpackFontData();
|
||||||
|
auto typeface = Typeface::createSystemTypefaceFor (block.getData(), block.getSize());
|
||||||
|
|
||||||
|
beginTest ("Check Typeface::getSupportedFeatures detects GSUB table features");
|
||||||
|
expect (std::invoke ([&]
|
||||||
|
{
|
||||||
|
const auto features = typeface->getSupportedFeatures();
|
||||||
|
return std::find (features.begin(), features.end(), "aalt") != features.end();
|
||||||
|
}));
|
||||||
|
|
||||||
|
Array<int> glyphs;
|
||||||
|
Array<float> offsets;
|
||||||
|
typeface->getGlyphPositions (TypefaceMetricsKind::legacy, "AD", glyphs, offsets);
|
||||||
|
|
||||||
|
const auto aIndex = glyphs[0];
|
||||||
|
const auto dIndex = glyphs[1];
|
||||||
|
|
||||||
|
beginTest ("Check feature disablement");
|
||||||
|
{
|
||||||
|
Font baseFont { FontOptions { typeface }.withPointHeight (22)
|
||||||
|
.withFeatureDisabled ("aalt") };
|
||||||
|
|
||||||
|
auto ga = makeGlyphArrangement ("AD", baseFont);
|
||||||
|
expectEquals (ga.getGlyph (0).getGlyphIndex(), aIndex);
|
||||||
|
expectEquals (ga.getGlyph (1).getGlyphIndex(), dIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest ("Check feature enablement");
|
||||||
|
{
|
||||||
|
Font aaltFont { FontOptions { typeface }.withPointHeight (22)
|
||||||
|
.withFeatureEnabled ("aalt") };
|
||||||
|
|
||||||
|
auto ga = makeGlyphArrangement ("AD", aaltFont);
|
||||||
|
expectEquals (ga.getGlyph (0).getGlyphIndex(), aIndex);
|
||||||
|
expectEquals (ga.getGlyph (1).getGlyphIndex(), aIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
static GlyphArrangement makeGlyphArrangement (const String& text, const Font& font)
|
||||||
|
{
|
||||||
|
GlyphArrangement ga;
|
||||||
|
ga.addLineOfText (font, text, 0, 0);
|
||||||
|
return ga;
|
||||||
|
}
|
||||||
|
|
||||||
|
static MemoryBlock unpackFontData()
|
||||||
|
{
|
||||||
|
// This is a very simple font with glyphs for 'A', 'D'.
|
||||||
|
// It also has a single GSUB feature (aalt) that will substitute 'D' with 'A' when enabled.
|
||||||
|
static constexpr uint8_t testFontZip[] =
|
||||||
|
{
|
||||||
|
0x50, 0x4b, 0x03, 0x04, 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x9f,
|
||||||
|
0xb0, 0x5a, 0xda, 0xa4, 0x50, 0xbd, 0x61, 0x02, 0x00, 0x00, 0x50, 0x04,
|
||||||
|
0x00, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6f,
|
||||||
|
0x74, 0x66, 0x55, 0x54, 0x09, 0x00, 0x03, 0x50, 0x8a, 0x27, 0x68, 0x52,
|
||||||
|
0x8a, 0x27, 0x68, 0x75, 0x78, 0x0b, 0x00, 0x01, 0x04, 0xf5, 0x01, 0x00,
|
||||||
|
0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0xa5, 0x53, 0xcf, 0x6b, 0x13, 0x41,
|
||||||
|
0x14, 0xfe, 0x66, 0x67, 0x37, 0x89, 0x35, 0xa6, 0xb1, 0x3f, 0x24, 0x05,
|
||||||
|
0x29, 0x41, 0x22, 0x55, 0x69, 0x63, 0xda, 0x83, 0x94, 0x58, 0x51, 0xd3,
|
||||||
|
0x34, 0x7a, 0xa8, 0xc4, 0xb6, 0xb1, 0x14, 0x29, 0xe8, 0xea, 0x6e, 0x9b,
|
||||||
|
0x40, 0x7e, 0x99, 0x6c, 0x68, 0x0f, 0x22, 0x82, 0xa0, 0x42, 0x2e, 0xe2,
|
||||||
|
0x41, 0x0f, 0x7a, 0xf5, 0xe6, 0xc9, 0x93, 0x7a, 0x11, 0x2f, 0xa2, 0x37,
|
||||||
|
0xff, 0x88, 0x1c, 0x04, 0x0b, 0x2b, 0x52, 0x69, 0x28, 0xd2, 0xf5, 0xcd,
|
||||||
|
0x66, 0x12, 0x92, 0x5e, 0x7a, 0xf0, 0xc1, 0xee, 0xfb, 0xde, 0x37, 0x33,
|
||||||
|
0xdf, 0xcc, 0xbc, 0xf7, 0x26, 0x9d, 0xc9, 0xa4, 0xd1, 0x87, 0x87, 0xe0,
|
||||||
|
0x08, 0xcf, 0xa6, 0x52, 0xe1, 0xab, 0x8f, 0xdf, 0x6d, 0x00, 0x3c, 0x09,
|
||||||
|
0xe0, 0xfd, 0x95, 0xa5, 0x1b, 0x89, 0x37, 0xbf, 0x3f, 0x70, 0x8a, 0xff,
|
||||||
|
0x52, 0x9c, 0x4c, 0x2f, 0x9d, 0x9d, 0x9a, 0x9b, 0x9e, 0x1b, 0x01, 0x58,
|
||||||
|
0x90, 0xe2, 0xdb, 0x77, 0x0b, 0x7a, 0x19, 0x37, 0xf1, 0x1a, 0x50, 0x7e,
|
||||||
|
0x50, 0x3c, 0x93, 0x35, 0x75, 0xe3, 0x8c, 0xef, 0x63, 0x83, 0xf0, 0x5b,
|
||||||
|
0xfa, 0xce, 0x65, 0x89, 0xd0, 0x9e, 0xb3, 0x18, 0x61, 0xc1, 0x45, 0xb2,
|
||||||
|
0x05, 0x6b, 0x53, 0x1b, 0x62, 0xe3, 0x80, 0x7a, 0x89, 0xe2, 0x40, 0x41,
|
||||||
|
0xdf, 0x2c, 0x43, 0xbd, 0x4e, 0x90, 0xf9, 0xe8, 0xe7, 0x29, 0xea, 0x05,
|
||||||
|
0xf3, 0xd7, 0xb7, 0x07, 0x29, 0x8a, 0xcb, 0xf4, 0x6d, 0x94, 0x4b, 0x55,
|
||||||
|
0x8b, 0xce, 0x45, 0xc6, 0x23, 0xf4, 0x0b, 0x83, 0x89, 0xa9, 0xc0, 0xd6,
|
||||||
|
0x3d, 0xcf, 0x8b, 0x5b, 0xfd, 0x33, 0x7f, 0xc0, 0x55, 0x31, 0x88, 0xc6,
|
||||||
|
0xb5, 0xf8, 0xf7, 0x8e, 0x37, 0x60, 0xb0, 0x6d, 0x2e, 0xce, 0xc3, 0xa1,
|
||||||
|
0xa0, 0x65, 0xb4, 0x86, 0x4f, 0xe3, 0x2b, 0x9d, 0x73, 0x05, 0xc6, 0x9e,
|
||||||
|
0x9f, 0x6d, 0xbb, 0x4a, 0xdd, 0x46, 0xbb, 0xd0, 0x39, 0x84, 0x1c, 0x57,
|
||||||
|
0x56, 0xd8, 0x33, 0x68, 0x50, 0x71, 0xb0, 0xf5, 0xa8, 0x5c, 0x24, 0x23,
|
||||||
|
0x77, 0x19, 0x49, 0xda, 0x0b, 0xed, 0x1d, 0x7b, 0xac, 0x75, 0x83, 0x20,
|
||||||
|
0xbe, 0xc8, 0x95, 0xcc, 0xdd, 0xa5, 0x85, 0x15, 0x78, 0x29, 0x62, 0xf2,
|
||||||
|
0x34, 0x23, 0x38, 0x2c, 0xb1, 0x0a, 0x3f, 0x22, 0x12, 0x6b, 0xc4, 0xc6,
|
||||||
|
0x24, 0xf6, 0x74, 0x78, 0xb5, 0x4b, 0x47, 0x95, 0x3a, 0x1c, 0x4c, 0x3d,
|
||||||
|
0x44, 0x8c, 0x0f, 0xe7, 0x25, 0x56, 0x10, 0xc0, 0xac, 0xc4, 0x1c, 0x53,
|
||||||
|
0x58, 0x90, 0x58, 0x45, 0x08, 0x8f, 0x24, 0xd6, 0x70, 0x0c, 0xaf, 0x24,
|
||||||
|
0xf6, 0x74, 0xf8, 0xc1, 0x2e, 0x9d, 0xc1, 0x96, 0x4e, 0xc6, 0xac, 0x5a,
|
||||||
|
0x8b, 0xe6, 0x7a, 0x2d, 0xaf, 0x57, 0xd6, 0x4a, 0x45, 0x2b, 0x51, 0xcb,
|
||||||
|
0xe5, 0x0d, 0xb3, 0x12, 0x0f, 0x0b, 0x3e, 0x2a, 0x07, 0x04, 0x9e, 0x90,
|
||||||
|
0x78, 0xd9, 0xac, 0x54, 0x73, 0xa5, 0x62, 0x38, 0x16, 0x9d, 0x44, 0x06,
|
||||||
|
0x26, 0xaa, 0xb0, 0xb0, 0x48, 0x7e, 0x1d, 0x35, 0xe4, 0xa1, 0xa3, 0x82,
|
||||||
|
0x35, 0x94, 0x50, 0x24, 0x36, 0x41, 0x4c, 0x8e, 0x38, 0x83, 0x46, 0x2b,
|
||||||
|
0x88, 0x53, 0xca, 0xda, 0xf3, 0xa3, 0xfb, 0x56, 0xb4, 0xf9, 0x89, 0x7d,
|
||||||
|
0xfc, 0xb2, 0xbb, 0xb2, 0x4a, 0x2a, 0x42, 0x31, 0x4c, 0x09, 0x8b, 0x62,
|
||||||
|
0xb2, 0x95, 0x61, 0xb7, 0xce, 0x18, 0x12, 0x37, 0x71, 0xbd, 0x8a, 0x53,
|
||||||
|
0x6e, 0x26, 0x45, 0x06, 0x15, 0x51, 0x39, 0xc7, 0x69, 0x55, 0xd0, 0x71,
|
||||||
|
0x9c, 0xcf, 0xce, 0xa7, 0x4e, 0x7d, 0xf9, 0x41, 0x6d, 0xa0, 0x32, 0x30,
|
||||||
|
0xc6, 0x8e, 0x74, 0x5f, 0x59, 0x10, 0x63, 0xcd, 0xe3, 0xca, 0xe8, 0x4b,
|
||||||
|
0xf3, 0xce, 0x6a, 0xd0, 0xa9, 0xd7, 0x3b, 0xc0, 0xef, 0xb5, 0xed, 0xe6,
|
||||||
|
0xd3, 0xdd, 0xfb, 0x5a, 0xa3, 0xbf, 0xbe, 0x33, 0x3f, 0xf0, 0xf3, 0x28,
|
||||||
|
0x14, 0xc6, 0x3c, 0x03, 0xd1, 0x62, 0x2d, 0x9f, 0xef, 0x51, 0x20, 0xe5,
|
||||||
|
0x27, 0x38, 0x81, 0x93, 0x24, 0xcf, 0x86, 0x4f, 0x5f, 0x58, 0x68, 0x6e,
|
||||||
|
0xd9, 0xf6, 0xf0, 0x6e, 0xc8, 0x6b, 0x8f, 0xed, 0xac, 0xd6, 0x6d, 0xdb,
|
||||||
|
0xb7, 0x17, 0xf2, 0x06, 0xfe, 0x87, 0x73, 0xef, 0xd7, 0x87, 0x51, 0x8c,
|
||||||
|
0x83, 0x25, 0x53, 0xf3, 0x19, 0xaa, 0xb2, 0xdb, 0xf5, 0x94, 0x05, 0xf7,
|
||||||
|
0xa5, 0xe9, 0x7a, 0xde, 0x82, 0x4f, 0x76, 0x16, 0x93, 0xdd, 0x29, 0x7a,
|
||||||
|
0x81, 0xc1, 0xe3, 0xce, 0x61, 0xe2, 0xb5, 0x50, 0xa9, 0x00, 0xc3, 0xf5,
|
||||||
|
0x84, 0xfe, 0x01, 0x50, 0x4b, 0x01, 0x02, 0x1e, 0x03, 0x14, 0x00, 0x00,
|
||||||
|
0x00, 0x08, 0x00, 0x08, 0x9f, 0xb0, 0x5a, 0xda, 0xa4, 0x50, 0xbd, 0x61,
|
||||||
|
0x02, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x81, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6f, 0x74, 0x66, 0x55, 0x54, 0x05,
|
||||||
|
0x00, 0x03, 0x50, 0x8a, 0x27, 0x68, 0x75, 0x78, 0x0b, 0x00, 0x01, 0x04,
|
||||||
|
0xf5, 0x01, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x50, 0x4b, 0x05,
|
||||||
|
0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00,
|
||||||
|
0x00, 0xa3, 0x02, 0x00, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
MemoryInputStream memoryStream { (const void*) testFontZip, std::size (testFontZip), false };
|
||||||
|
ZipFile zip { &memoryStream, false };
|
||||||
|
|
||||||
|
auto stream = rawToUniquePtr (zip.createStreamForEntry (zip.getIndexOfFileName ("test.otf")));
|
||||||
|
jassert (stream != nullptr);
|
||||||
|
|
||||||
|
MemoryBlock data;
|
||||||
|
stream->readIntoMemoryBlock (data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static FontFeatureTests fontFeatureTests;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // namespace juce
|
} // namespace juce
|
||||||
|
|
|
||||||
|
|
@ -384,6 +384,16 @@ public:
|
||||||
*/
|
*/
|
||||||
static Typeface::Ptr findSystemTypeface();
|
static Typeface::Ptr findSystemTypeface();
|
||||||
|
|
||||||
|
/** Returns the OpenType features supported by this typeface.
|
||||||
|
|
||||||
|
This method returns a list of all OpenType font features (such as ligatures,
|
||||||
|
small caps, stylistic alternates, etc.) that are available in the current
|
||||||
|
typeface.
|
||||||
|
|
||||||
|
@see FontFeatureTag, FontFeatureSetting, FontOptions, Font
|
||||||
|
*/
|
||||||
|
std::vector<FontFeatureTag> getSupportedFeatures() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
String name;
|
String name;
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,7 @@ extern "C"
|
||||||
#include "image_formats/juce_PNGLoader.cpp"
|
#include "image_formats/juce_PNGLoader.cpp"
|
||||||
#include "fonts/juce_AttributedString.cpp"
|
#include "fonts/juce_AttributedString.cpp"
|
||||||
#include "fonts/juce_Typeface.cpp"
|
#include "fonts/juce_Typeface.cpp"
|
||||||
|
#include "fonts/juce_FontFeatures.cpp"
|
||||||
#include "fonts/juce_FontOptions.cpp"
|
#include "fonts/juce_FontOptions.cpp"
|
||||||
#include "fonts/juce_Font.cpp"
|
#include "fonts/juce_Font.cpp"
|
||||||
#include "detail/juce_Ranges.cpp"
|
#include "detail/juce_Ranges.cpp"
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,7 @@ namespace juce
|
||||||
#include "contexts/juce_GraphicsContext.h"
|
#include "contexts/juce_GraphicsContext.h"
|
||||||
#include "images/juce_Image.h"
|
#include "images/juce_Image.h"
|
||||||
#include "colour/juce_FillType.h"
|
#include "colour/juce_FillType.h"
|
||||||
|
#include "fonts/juce_FontFeatures.h"
|
||||||
#include "fonts/juce_Typeface.h"
|
#include "fonts/juce_Typeface.h"
|
||||||
#include "fonts/juce_FontOptions.h"
|
#include "fonts/juce_FontOptions.h"
|
||||||
#include "fonts/juce_Font.h"
|
#include "fonts/juce_Font.h"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue