This question has been asked in the past but those questions were either not answered or suggested solutions that required multiple labels separated by newlines and placement rules to simulate a contiguous label.

Does the label engine in QGIS currently allow styling substrings based on rules? I'm writing a quick tutorial for a GIS class on labelling, and I'm seeing if a label like this:

"name_en" ||  '\n'  ||  'is a ' || lower("category") || ' site which is ' || case when "danger" = 1 then 'under threat.' else 'not under threat.' end 

Can be modified so that the contents of the field "name_en" is displayed in bold, whereas the rest of the string is displayed using regular font. For reference, the data in question is UNESCO's list of World Heritage Sites, available here.

I can get there by splitting them up in two and devising a rule for "name_en" separately, but that feels like a wonky solution. I've tried several expressions in the 'data defined override' button, but the result always comes back as either all bold or all regular. It expects a boolean argument, so that kind of assumes the output (i.e. any given label) will always be either all bold or all regular.

I assume the answer will involve something like using the length of the name_en string to apply the bold style to the first n characters, or:


But I'm not finding a way to use that kind of logic to style a substring of a label.

  • 3
    Short answer: No. Longer answer: Not yet. Even longer answer: Using different colors is on the todo list for QGIS 3.14, but bold is still looking for a sponsor. Apr 5, 2020 at 16:03
  • Thank you for the clarification @MatthiasKuhn!
    – Encomium
    Apr 5, 2020 at 16:23

1 Answer 1


If you are not bound to a specific font (those characters might be missing for some), you can abuse special Unicode characters for this. This is the same trick people use to have bold or cursive text on social media.

https://boldtext.io/ has a pretty thorough explanation and the characters ready to copy and paste.

The other pre-condition is that you must be willing to do some awful hacking.

You can use the special characters with the replace function in the label expression. Your expression will become really awkward, long and hard to maintain if you start having too much fun.

Here is an example using Natural Earth data, you can enter world in the coordinate indicator at the bottom of the QGIS screen and hit Enter to load the data set I used.

    array('๐—ฎ','๐—ฏ','๐—ฐ','๐—ฑ','๐—ฒ','๐—ณ','๐—ด','๐—ต','๐—ถ','๐—ท','๐—ธ','๐—น','๐—บ','๐—ป','๐—ผ','๐—ฝ','๐—พ','๐—ฟ','๐˜€','๐˜','๐˜‚','๐˜ƒ','๐˜„','๐˜…','๐˜†','๐˜‡','๐—”','๐—•','๐—–','๐——','๐—˜','๐—™','๐—š','๐—›','๐—œ','๐—','๐—ž','๐—Ÿ','๐— ','๐—ก','๐—ข','๐—ฃ','๐—ค','๐—ฅ','๐—ฆ','๐—ง','๐—จ','๐—ฉ','๐—ช','๐—ซ','๐—ฌ','๐—ญ','๐Ÿฌ','๐Ÿญ','๐Ÿฎ','๐Ÿฏ','๐Ÿฐ','๐Ÿฑ','๐Ÿฒ','๐Ÿณ','๐Ÿด','๐Ÿต'),
    replace("NAME", @normal_characters, @bold_characters)
    || '\n'  ||  'has the ISO A3 code ' ||
      array('๐–†','๐–‡','๐–ˆ','๐–‰','๐–Š','๐–‹','๐–Œ','๐–','๐–Ž','๐–','๐–','๐–‘','๐–’','๐–“','๐–”','๐–•','๐––','๐–—','๐–˜','๐–™','๐–š','๐–›','๐–œ','๐–','๐–ž','๐–Ÿ','๐•ฌ','๐•ญ','๐•ฎ','๐•ฏ','๐•ฐ','๐•ฑ','๐•ฒ','๐•ณ','๐•ด','๐•ต','๐•ถ','๐•ท','๐•ธ','๐•น','๐•บ','๐•ป','๐•ผ','๐•ฝ','๐•พ','๐•ฟ','๐–€','๐–','๐–‚','๐–ƒ','๐–„','๐–…'),  -- no numbers
        "ISO_A3" = 'DEU',
        replace("ISO_A3", array_slice(@normal_characters, 0, 51), @fraktur),  -- only the first 52 normal characters

enter image description here

  • 3
    Great knowledge @bugmenot123 -- thanks for sharing!
    – Encomium
    Apr 5, 2020 at 18:18
  • Amazing solution!
    – Val P
    Apr 5, 2020 at 20:36
  • What a nice hack! Thank you.
    – muhalif
    Apr 9, 2020 at 7:12
  • Great idea, but if I create project variables and paste the letters, when the project is reopened, I CANNOT find the letters in the project variables anymore !!! (OSGeo4W64 - QGIS 3.16.3 Hannover)
    – pigreco
    Feb 13, 2021 at 14:23
  • issue: - issue: github.com/qgis/QGIS/issues/41541
    – pigreco
    Feb 13, 2021 at 14:41

Your Answer

By clicking โ€œPost Your Answerโ€, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.