Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py7
-rw-r--r--source/blender/blenfont/BLF_api.h8
-rw-r--r--source/blender/blenfont/intern/blf_glyph.c21
-rw-r--r--source/blender/editors/interface/interface_style.c25
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h7
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c15
6 files changed, 58 insertions, 25 deletions
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index e0902dd8636..26facd25174 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -538,9 +538,10 @@ class USERPREF_PT_system(Panel):
col.separator()
col.label(text="Text Draw Options:")
- col.prop(system, "use_text_antialiasing")
- if system.use_text_antialiasing:
- col.prop(system, "use_text_hinting")
+ col.prop(system, "use_text_antialiasing", text="Anti-aliasing")
+ sub = col.column()
+ sub.active = system.use_text_antialiasing
+ sub.prop(system, "text_hinting", text="Hinting")
col.separator()
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h
index 9bb3dd39aa6..0a4212ff233 100644
--- a/source/blender/blenfont/BLF_api.h
+++ b/source/blender/blenfont/BLF_api.h
@@ -218,9 +218,11 @@ void BLF_state_print(int fontid);
#define BLF_KERNING_DEFAULT (1 << 3)
#define BLF_MATRIX (1 << 4)
#define BLF_ASPECT (1 << 5)
-#define BLF_HINTING (1 << 6)
-#define BLF_WORD_WRAP (1 << 7)
-#define BLF_MONOCHROME (1 << 8) /* no-AA */
+#define BLF_WORD_WRAP (1 << 6)
+#define BLF_MONOCHROME (1 << 7) /* no-AA */
+#define BLF_HINTING_NONE (1 << 8)
+#define BLF_HINTING_SLIGHT (1 << 9)
+#define BLF_HINTING_FULL (1 << 10)
#define BLF_DRAW_STR_DUMMY_MAX 1024
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index f1301d38ab6..c19c8528232 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -221,7 +221,6 @@ GlyphBLF *blf_glyph_add(FontBLF *font, unsigned int index, unsigned int c)
GlyphBLF *g;
FT_Error err;
FT_Bitmap bitmap, tempbitmap;
- int flags = FT_LOAD_TARGET_NORMAL | FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
FT_BBox bbox;
unsigned int key;
@@ -242,13 +241,27 @@ GlyphBLF *blf_glyph_add(FontBLF *font, unsigned int index, unsigned int c)
return g;
}
- if (font->flags & BLF_HINTING)
- flags &= ~FT_LOAD_NO_HINTING;
-
if (font->flags & BLF_MONOCHROME) {
err = FT_Load_Glyph(font->face, (FT_UInt)index, FT_LOAD_TARGET_MONO);
}
else {
+ int flags = FT_LOAD_NO_BITMAP;
+
+ if (font->flags & BLF_HINTING_NONE) {
+ flags |= FT_LOAD_TARGET_NORMAL | FT_LOAD_NO_HINTING;
+ }
+ else if (font->flags & BLF_HINTING_SLIGHT) {
+ flags |= FT_LOAD_TARGET_LIGHT;
+ }
+ else if (font->flags & BLF_HINTING_FULL) {
+ flags |= FT_LOAD_TARGET_NORMAL;
+ }
+ else {
+ /* Default, hinting disabled until FreeType has been upgraded
+ * to give good results on all platforms. */
+ flags |= FT_LOAD_TARGET_NORMAL | FT_LOAD_NO_HINTING;
+ }
+
err = FT_Load_Glyph(font->face, (FT_UInt)index, flags);
}
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c
index 0257fb0d428..c7ecc37b0bf 100644
--- a/source/blender/editors/interface/interface_style.c
+++ b/source/blender/editors/interface/interface_style.c
@@ -523,30 +523,35 @@ void uiStyleInit(void)
/* Set default flags based on UI preferences (not render fonts) */
{
- int flag_enable = 0, flag_disable = 0;
- if ((U.text_render & USER_TEXT_DISABLE_HINTING) == 0) {
- flag_enable |= BLF_HINTING;
+ int flag_disable = BLF_MONOCHROME |
+ BLF_HINTING_NONE |
+ BLF_HINTING_SLIGHT |
+ BLF_HINTING_FULL;
+ int flag_enable = 0;
+
+ if (U.text_render & USER_TEXT_HINTING_NONE) {
+ flag_enable |= BLF_HINTING_NONE;
}
- else {
- flag_disable |= BLF_HINTING;
+ else if (U.text_render & USER_TEXT_HINTING_SLIGHT) {
+ flag_enable |= BLF_HINTING_SLIGHT;
+ }
+ else if (U.text_render & USER_TEXT_HINTING_FULL) {
+ flag_enable |= BLF_HINTING_FULL;
}
if (U.text_render & USER_TEXT_DISABLE_AA) {
flag_enable |= BLF_MONOCHROME;
}
- else {
- flag_disable |= BLF_MONOCHROME;
- }
for (font = U.uifonts.first; font; font = font->next) {
if (font->blf_id != -1) {
- BLF_enable(font->blf_id, flag_enable);
BLF_disable(font->blf_id, flag_disable);
+ BLF_enable(font->blf_id, flag_enable);
}
}
if (blf_mono_font != -1) {
- BLF_enable(blf_mono_font, flag_enable);
BLF_disable(blf_mono_font, flag_disable);
+ BLF_enable(blf_mono_font, flag_enable);
}
}
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 6f0f97261ee..f78b48b2d25 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -67,7 +67,7 @@ typedef struct uiFont {
short blf_id; /* from blfont lib */
short uifont_id; /* own id (eUIFont_ID) */
short r_to_l; /* fonts that read from left to right */
- short hinting;
+ short pad;
} uiFont;
/* this state defines appearance of text */
@@ -805,7 +805,10 @@ typedef enum eWM_DrawMethod {
* UserDef.text_render */
typedef enum eText_Draw_Options {
USER_TEXT_DISABLE_AA = (1 << 0),
- USER_TEXT_DISABLE_HINTING = (1 << 1),
+
+ USER_TEXT_HINTING_NONE = (1 << 1),
+ USER_TEXT_HINTING_SLIGHT = (1 << 2),
+ USER_TEXT_HINTING_FULL = (1 << 3),
} eText_Draw_Options;
/* tw_flag (transform widget) */
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 315ac26c1d2..c3e30de10af 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -3973,6 +3973,14 @@ static void rna_def_userdef_system(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL}
};
+ static const EnumPropertyItem text_hinting_items[] = {
+ {0, "AUTO", 0, "Auto", ""},
+ {USER_TEXT_HINTING_NONE, "NONE", 0, "None", ""},
+ {USER_TEXT_HINTING_SLIGHT, "SLIGHT", 0, "Slight", ""},
+ {USER_TEXT_HINTING_FULL, "FULL", 0, "Full", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
srna = RNA_def_struct(brna, "UserPreferencesSystem", NULL);
RNA_def_struct_sdna(srna, "UserDef");
RNA_def_struct_nested(brna, srna, "UserPreferences");
@@ -4207,9 +4215,10 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Text Anti-aliasing", "Draw user interface text anti-aliased");
RNA_def_property_update(prop, 0, "rna_userdef_text_update");
- prop = RNA_def_property(srna, "use_text_hinting", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "text_render", USER_TEXT_DISABLE_HINTING);
- RNA_def_property_ui_text(prop, "Text Hinting", "Draw user interface text with hinting");
+ prop = RNA_def_property(srna, "text_hinting", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_bitflag_sdna(prop, NULL, "text_render");
+ RNA_def_property_enum_items(prop, text_hinting_items);
+ RNA_def_property_ui_text(prop, "Text Hinting", "Method for making user interface text render sharp");
RNA_def_property_update(prop, 0, "rna_userdef_text_update");
prop = RNA_def_property(srna, "select_method", PROP_ENUM, PROP_NONE);