Country Flags
Note
This requires that you have the Twemoji Mozilla font installed.
The functionality described below requires component version 3.6.0
or later.
While it has always been possible to display flags with images or writing your own scripts to make use of emoji, this details some helper methods which have been added to make it easier.
Title formatting#
Note
These examples assume you have a supported value inside a %country%
tag. Adjust as
necessary.
A $country_flag
function has been added and you can use it like this:
$font(Twemoji Mozilla,16)$country_flag(%country%)
If using the Text Display
sample, the $font
parsing is handled automatically.
Note
The use of $font
is detailed here. If you want to
utilise $font
in your own scripts, you can use gr.WriteText2
or utils.CreateTextLayout
. They also support $rgb
if you want to combine that for other text.
Example
// ==PREPROCESSOR==
// @import "%fb2k_component_path%helpers.txt"
// ==/PREPROCESSOR==
// $font() with no args resets back to the default_font supplied to
// DrawStyledText in on_paint
// also includes $rgb example
var tfo = fb.TitleFormat(
"[$font(Twemoji Mozilla,18)$country_flag(%country%)$font() ]$rgb(255,0,0)%artist%"
);
var str = "";
refresh();
function refresh() {
var item = fb.GetFocusItem();
if (item) {
str = tfo.EvalWithMetadb(item);
} else {
str = "";
}
}
function on_item_focus_change() {
refresh();
window.Repaint();
}
function on_playlist_switch() {
refresh();
window.Repaint();
}
function on_paint(gr) {
// default_font is an empty string, defaulting to Segoe UI, 16px
gr.WriteText2(str, "", 0, 0, 0, window.Width, window.Height, 2, 2);
}
JavaScript#
If you prefer not to use title formatting, you can use utils.GetCountryFlag
method
which accepts a 2 letter country code or the full country name. See
supported values. An empty string will be returned on failure.
Example
// ==PREPROCESSOR==
// @import "%fb2k_component_path%helpers.txt"
// ==/PREPROCESSOR==
var font = CreateFontString("Twemoji Mozilla", 24);
var flag = utils.GetCountryFlag("GB");
function on_paint(gr) {
gr.WriteText(flag, font, 0, 0, 0, window.Width, window.Height, 2, 2);
}
Supported values#
Case is not important. You can supply the code or full name. A few examples:
gb | United Kingdom |
fr | France |
de | Germany |
A complete list of supported values can be found in this file: countries.json