LMMS
Loading...
Searching...
No Matches
juce_Typeface.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
47{
48public:
49 //==============================================================================
52
53 //==============================================================================
57 const String& getName() const noexcept { return name; }
58
59 //==============================================================================
63 const String& getStyle() const noexcept { return style; }
64
65 //==============================================================================
67 static Ptr createSystemTypefaceFor (const Font& font);
68
73 static Ptr createSystemTypefaceFor (const void* fontFileData, size_t fontFileDataSize);
74
75 //==============================================================================
77 ~Typeface() override;
78
83 virtual bool isSuitableForFont (const Font&) const { return true; }
84
90 virtual float getAscent() const = 0;
91
97 virtual float getDescent() const = 0;
98
102 virtual float getHeightToPointsFactor() const = 0;
103
108 virtual float getStringWidth (const String& text) = 0;
109
114 virtual void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) = 0;
115
119 virtual bool getOutlineForGlyph (int glyphNumber, Path& path) = 0;
120
122 virtual EdgeTable* getEdgeTableForGlyph (int glyphNumber, const AffineTransform& transform, float fontHeight);
123
125 virtual bool isHinted() const { return false; }
126
127 //==============================================================================
129 static void setTypefaceCacheSize (int numFontsToCache);
130
132 static void clearTypefaceCache();
133
137 static void scanFolderForFonts (const File& folder);
138
143 void applyVerticalHintingTransform (float fontHeight, Path& path);
144
145protected:
146 //==============================================================================
148
149 Typeface (const String& name, const String& style) noexcept;
150
151 static Ptr getFallbackTypeface();
152
153private:
154 struct HintingParams;
155 std::unique_ptr<HintingParams> hintingParams;
157
159};
160
161} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_AffineTransform.h:43
Definition juce_Array.h:56
Definition juce_CriticalSection.h:43
Definition juce_EdgeTable.h:38
Definition juce_File.h:45
Definition juce_Font.h:42
Definition juce_Path.h:65
Definition juce_ReferenceCountedObject.h:247
Definition juce_String.h:53
virtual float getStringWidth(const String &text)=0
virtual float getAscent() const =0
static Ptr getFallbackTypeface()
Definition juce_Typeface.cpp:115
const String & getStyle() const noexcept
Definition juce_Typeface.h:63
String style
Definition juce_Typeface.h:147
virtual bool isSuitableForFont(const Font &) const
Definition juce_Typeface.h:83
std::unique_ptr< HintingParams > hintingParams
Definition juce_Typeface.h:155
virtual bool getOutlineForGlyph(int glyphNumber, Path &path)=0
virtual bool isHinted() const
Definition juce_Typeface.h:125
const String & getName() const noexcept
Definition juce_Typeface.h:57
virtual EdgeTable * getEdgeTableForGlyph(int glyphNumber, const AffineTransform &transform, float fontHeight)
Definition juce_Typeface.cpp:121
Typeface(const String &name, const String &style) noexcept
Definition juce_Typeface.cpp:108
virtual float getHeightToPointsFactor() const =0
ReferenceCountedObjectPtr< Typeface > Ptr
Definition juce_Typeface.h:51
String name
Definition juce_Typeface.h:147
CriticalSection hintingLock
Definition juce_Typeface.h:156
~Typeface() override
virtual float getDescent() const =0
virtual void getGlyphPositions(const String &text, Array< int > &glyphs, Array< float > &xOffsets)=0
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_Typeface.cpp:138
const char * text
Definition swell-functions.h:167
#define const
Definition zconf.h:137