[Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

Description

@derrickmehaffy

Plugin Version

0.12.0

Operating System

Linux (Debian/Ubuntu)

Bug Description

Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

Steps to Reproduce

  1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
  2. Open the faction GUI (e.g., /f info or /f admin)
  3. Observe button labels, activity log entries, and other translated text
  4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

Expected Behavior

Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

  • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

Debug / Research Phase

Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

Characters to include per language:

  • All unique non-ASCII characters from that locale's translation file
  • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
  • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
  • Any special punctuation or symbols used in translations

This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

Logs

No response

Code Snippets

No response

Media

Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

Additional information

  • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
  • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
  • She1lob notes it may be a font issue rather than a Unicode/encoding issue
  • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
  • Russian (ru-RU) Cyrillic characters are very likely affected as well
  • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

Confirmation Checklist

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

    Description

    @derrickmehaffy

    Plugin Version

    0.12.0

    Operating System

    Linux (Debian/Ubuntu)

    Bug Description

    Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

    This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

    Steps to Reproduce

    1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
    2. Open the faction GUI (e.g., /f info or /f admin)
    3. Observe button labels, activity log entries, and other translated text
    4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

    Expected Behavior

    Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

    • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

    This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

    Debug / Research Phase

    Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

    Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

    Characters to include per language:

    • All unique non-ASCII characters from that locale's translation file
    • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
    • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
    • Any special punctuation or symbols used in translations

    This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

    Logs

    No response

    Code Snippets

    No response

    Media

    Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

    Additional information

    • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
    • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
    • She1lob notes it may be a font issue rather than a Unicode/encoding issue
    • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
    • Russian (ru-RU) Cyrillic characters are very likely affected as well
    • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

    Confirmation Checklist

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      bugSomething isn't working

      Type

      No type

      Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

      Description

      @derrickmehaffy

      Plugin Version

      0.12.0

      Operating System

      Linux (Debian/Ubuntu)

      Bug Description

      Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

      This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

      Steps to Reproduce

      1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
      2. Open the faction GUI (e.g., /f info or /f admin)
      3. Observe button labels, activity log entries, and other translated text
      4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

      Expected Behavior

      Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

      • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

      This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

      Debug / Research Phase

      Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

      Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

      Characters to include per language:

      • All unique non-ASCII characters from that locale's translation file
      • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
      • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
      • Any special punctuation or symbols used in translations

      This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

      Logs

      No response

      Code Snippets

      No response

      Media

      Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

      Additional information

      • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
      • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
      • She1lob notes it may be a font issue rather than a Unicode/encoding issue
      • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
      • Russian (ru-RU) Cyrillic characters are very likely affected as well
      • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

      Confirmation Checklist

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        bugSomething isn't working

        Type

        No type

        Projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

        Description

        @derrickmehaffy

        Plugin Version

        0.12.0

        Operating System

        Linux (Debian/Ubuntu)

        Bug Description

        Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

        This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

        Steps to Reproduce

        1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
        2. Open the faction GUI (e.g., /f info or /f admin)
        3. Observe button labels, activity log entries, and other translated text
        4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

        Expected Behavior

        Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

        • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

        This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

        Debug / Research Phase

        Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

        Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

        Characters to include per language:

        • All unique non-ASCII characters from that locale's translation file
        • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
        • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
        • Any special punctuation or symbols used in translations

        This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

        Logs

        No response

        Code Snippets

        No response

        Media

        Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

        Additional information

        • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
        • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
        • She1lob notes it may be a font issue rather than a Unicode/encoding issue
        • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
        • Russian (ru-RU) Cyrillic characters are very likely affected as well
        • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

        Confirmation Checklist

        Metadata

        Metadata

        Assignees

        No one assigned

          Labels

          bugSomething isn't working

          Type

          No type

          Projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

          Description

          @derrickmehaffy

          Plugin Version

          0.12.0

          Operating System

          Linux (Debian/Ubuntu)

          Bug Description

          Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

          This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

          Steps to Reproduce

          1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
          2. Open the faction GUI (e.g., /f info or /f admin)
          3. Observe button labels, activity log entries, and other translated text
          4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

          Expected Behavior

          Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

          • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

          This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

          Debug / Research Phase

          Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

          Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

          Characters to include per language:

          • All unique non-ASCII characters from that locale's translation file
          • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
          • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
          • Any special punctuation or symbols used in translations

          This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

          Logs

          No response

          Code Snippets

          No response

          Media

          Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

          Additional information

          • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
          • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
          • She1lob notes it may be a font issue rather than a Unicode/encoding issue
          • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
          • Russian (ru-RU) Cyrillic characters are very likely affected as well
          • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

          Confirmation Checklist

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            bugSomething isn't working

            Type

            No type

            Projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

            Description

            @derrickmehaffy

            Plugin Version

            0.12.0

            Operating System

            Linux (Debian/Ubuntu)

            Bug Description

            Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

            This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

            Steps to Reproduce

            1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
            2. Open the faction GUI (e.g., /f info or /f admin)
            3. Observe button labels, activity log entries, and other translated text
            4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

            Expected Behavior

            Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

            • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

            This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

            Debug / Research Phase

            Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

            Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

            Characters to include per language:

            • All unique non-ASCII characters from that locale's translation file
            • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
            • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
            • Any special punctuation or symbols used in translations

            This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

            Logs

            No response

            Code Snippets

            No response

            Media

            Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

            Additional information

            • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
            • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
            • She1lob notes it may be a font issue rather than a Unicode/encoding issue
            • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
            • Russian (ru-RU) Cyrillic characters are very likely affected as well
            • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

            Confirmation Checklist

            Metadata

            Metadata

            Assignees

            No one assigned

              Labels

              bugSomething isn't working

              Type

              No type

              Projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

              Description

              @derrickmehaffy

              Plugin Version

              0.12.0

              Operating System

              Linux (Debian/Ubuntu)

              Bug Description

              Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

              This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

              Steps to Reproduce

              1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
              2. Open the faction GUI (e.g., /f info or /f admin)
              3. Observe button labels, activity log entries, and other translated text
              4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

              Expected Behavior

              Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

              • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

              This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

              Debug / Research Phase

              Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

              Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

              Characters to include per language:

              • All unique non-ASCII characters from that locale's translation file
              • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
              • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
              • Any special punctuation or symbols used in translations

              This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

              Logs

              No response

              Code Snippets

              No response

              Media

              Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

              Additional information

              • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
              • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
              • She1lob notes it may be a font issue rather than a Unicode/encoding issue
              • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
              • Russian (ru-RU) Cyrillic characters are very likely affected as well
              • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

              Confirmation Checklist

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                bugSomething isn't working

                Type

                No type

                Projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                [Bug]: Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as question marks in-game #110

                Description

                @derrickmehaffy

                Plugin Version

                0.12.0

                Operating System

                Linux (Debian/Ubuntu)

                Bug Description

                Polish diacritical characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) display as question marks (?) in-game when using the Polish (pl-PL) language. The i18n system loads and resolves translations correctly — the issue is that Hytale's in-game font likely does not include glyphs for these extended Latin characters.

                This affects all translated strings containing Polish-specific characters, including GUI text (buttons, labels, activity log entries) and chat messages.

                Steps to Reproduce

                1. Set HyperFactions language to Polish (pl-PL) via /f admin config or config file
                2. Open the faction GUI (e.g., /f info or /f admin)
                3. Observe button labels, activity log entries, and other translated text
                4. Polish characters (ą, ć, ę, ł, ń, ó, ś, ź, ż) render as ?

                Expected Behavior

                Polish characters should render correctly in-game. Since this appears to be a Hytale font limitation, the practical fix is to add a fallback/transliteration layer that strips diacritics from characters the font cannot render before sending text to the client:

                • ą → a, ć → c, ę → e, ł → l, ń → n, ó → o, ś → s, ź → z, ż → z

                This should apply automatically for characters the font cannot render, and ideally be extensible for other affected languages.

                Debug / Research Phase

                Before implementing a fix, we should identify the full scope of affected characters across all 10 supported languages. Create a character test page (/f admin test chars) that renders all unique characters from every supported locale in a simple grid layout so we can visually confirm which glyphs Hytale's font supports and which ones break.

                Supported languages to test: en-US, es-ES, de-DE, fr-FR, pt-BR, ru-RU, pl-PL, it-IT, nl-NL, tl-PH

                Characters to include per language:

                • All unique non-ASCII characters from that locale's translation file
                • Extended Latin: àáâãäåæçèéêëìíîïðñòóôõöùúûüýþ ąćęłńóśźż etc.
                • Cyrillic (ru-RU): абвгдежзийклмнопрстуфхцчшщъыьэюя
                • Any special punctuation or symbols used in translations

                This will tell us exactly which characters need transliteration vs which ones render fine, and whether this affects languages beyond Polish (Russian Cyrillic is likely affected too).

                Logs

                No response

                Code Snippets

                No response

                Media

                Screenshot from Discord report by She1lob (PLGY community member), showing the faction GUI with Polish translation active — button labels and activity log entries contain ? where diacritical characters should appear.

                Additional information

                • Reported by community member She1lob (PLGY) on Discord (March 21, 2026)
                • This is likely a Hytale client font limitation, not a HyperFactions encoding issue
                • She1lob notes it may be a font issue rather than a Unicode/encoding issue
                • Other languages with extended Latin characters (French é/è/ê, German ü/ö/ä, Portuguese ã/ç) should be tested too
                • Russian (ru-RU) Cyrillic characters are very likely affected as well
                • A java.text.Normalizer-based diacritic stripper would handle most Latin-based languages; Cyrillic would need a separate transliteration map

                Confirmation Checklist

                Metadata

                Metadata

                Assignees

                No one assigned

                  Labels

                  bugSomething isn't working

                  Type

                  No type

                  Projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions