mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-07 14:29:24 +00:00
[font/face] Refactor some code
This commit is contained in:
parent
b1c50eb938
commit
cbc205c2f0
2 changed files with 32 additions and 21 deletions
|
@ -342,6 +342,21 @@ static struct supported_face_loaders_t {
|
|||
#endif
|
||||
};
|
||||
|
||||
static const char *get_default_loader_name ()
|
||||
{
|
||||
static hb_atomic_ptr_t<const char> static_loader_name;
|
||||
const char *loader_name = static_loader_name.get_acquire ();
|
||||
if (!loader_name)
|
||||
{
|
||||
loader_name = getenv ("HB_FACE_LOADER");
|
||||
if (!loader_name)
|
||||
loader_name = "";
|
||||
if (!static_loader_name.cmpexch (nullptr, loader_name))
|
||||
loader_name = static_loader_name.get_acquire ();
|
||||
}
|
||||
return loader_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_face_create_from_file_or_fail_using:
|
||||
* @file_name: A font filename
|
||||
|
@ -367,19 +382,9 @@ hb_face_create_from_file_or_fail_using (const char *file_name,
|
|||
const char *loader_name)
|
||||
{
|
||||
bool retry = false;
|
||||
|
||||
if (!loader_name || !*loader_name)
|
||||
{
|
||||
static hb_atomic_ptr_t<const char> static_loader_name;
|
||||
loader_name = static_loader_name.get_acquire ();
|
||||
if (!loader_name)
|
||||
{
|
||||
loader_name = getenv ("HB_FACE_LOADER");
|
||||
if (!loader_name)
|
||||
loader_name = "";
|
||||
if (!static_loader_name.cmpexch (nullptr, loader_name))
|
||||
loader_name = static_loader_name.get_acquire ();
|
||||
}
|
||||
loader_name = get_default_loader_name ();
|
||||
retry = true;
|
||||
}
|
||||
if (loader_name && !*loader_name) loader_name = nullptr;
|
||||
|
|
|
@ -2321,6 +2321,21 @@ static struct supported_font_funcs_t {
|
|||
#endif
|
||||
};
|
||||
|
||||
static const char *get_default_funcs_name ()
|
||||
{
|
||||
static hb_atomic_ptr_t<const char> static_funcs_name;
|
||||
const char *name = static_funcs_name.get_acquire ();
|
||||
if (!name)
|
||||
{
|
||||
name = getenv ("HB_FONT_FUNCS");
|
||||
if (!name)
|
||||
name = "";
|
||||
if (!static_funcs_name.cmpexch (nullptr, name))
|
||||
name = static_funcs_name.get_acquire ();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_font_set_funcs_using:
|
||||
* @font: #hb_font_t to work upon
|
||||
|
@ -2345,16 +2360,7 @@ hb_font_set_funcs_using (hb_font_t *font,
|
|||
|
||||
if (!name || !*name)
|
||||
{
|
||||
static hb_atomic_ptr_t<const char> static_funcs_name;
|
||||
name = static_funcs_name.get_acquire ();
|
||||
if (!name)
|
||||
{
|
||||
name = getenv ("HB_FONT_FUNCS");
|
||||
if (!name)
|
||||
name = "";
|
||||
if (!static_funcs_name.cmpexch (nullptr, name))
|
||||
name = static_funcs_name.get_acquire ();
|
||||
}
|
||||
name = get_default_funcs_name ();
|
||||
retry = true;
|
||||
}
|
||||
if (name && !*name) name = nullptr;
|
||||
|
|
Loading…
Add table
Reference in a new issue