{"id":1996,"date":"2026-08-24T12:52:18","date_gmt":"2026-08-24T12:52:18","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=1996"},"modified":"2026-08-24T12:52:18","modified_gmt":"2026-08-24T12:52:18","slug":"clarion-unicode-preview-refreshed-beta-build-14204","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-preview-refreshed-beta-build-14204\/","title":{"rendered":"Clarion Unicode preview \u2014 refreshed beta build (14204)"},"content":{"rendered":"\n<style>\n.ustring-wp3 { --u-fg:#1c1917; --u-muted:#6b6560; --u-line:#e2dcd3; --u-card:#fff; --u-soft:#fef3c7; --u-accent:#b45309; --u-bg:#f7f5f1; --u-link:#0b5cad; font-family:system-ui,-apple-system,\"Segoe UI\",sans-serif; color:var(--u-fg); line-height:1.55; max-width:1080px; margin:0 auto; }\n@media (prefers-color-scheme: dark) {\n  .ustring-wp3 { --u-fg:#f5f5f4; --u-muted:#a8a29e; --u-line:#3f3a36; --u-card:#1c1917; --u-soft:#422006; --u-accent:#fbbf24; --u-bg:#121110; --u-link:#7dd3fc; }\n}\n.ustring-wp3 * { box-sizing:border-box; }\n.ustring-wp3 .uw-hero { background:linear-gradient(135deg,#1e2a4a 0%,#283a5e 45%,#431407 100%); color:#fafaf9; border-radius:14px; padding:1.75rem 1.5rem 1.5rem; margin:0 0 1.25rem; }\n.ustring-wp3 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#fbbf24; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp3 .uw-hero h2 { margin:0 0 .65rem; font-size:clamp(1.45rem,3.5vw,2rem); line-height:1.2; letter-spacing:-.02em; color:#fafaf9; }\n.ustring-wp3 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp3 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp3 .uw-pill { display:inline-block; padding:.3rem .7rem; border-radius:999px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.12); color:#fafaf9; font-size:.82rem; }\n.ustring-wp3 .uw-pill strong { color:#fde68a; font-weight:650; }\n.ustring-wp3 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp3 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp3 .uw-card { background:var(--u-card); border:1px solid var(--u-line); border-radius:14px; padding:1rem 1.05rem 1.1rem; }\n.ustring-wp3 .uw-icon { width:2rem; height:2rem; border-radius:10px; display:grid; place-items:center; background:var(--u-soft); color:var(--u-accent); font-weight:700; margin-bottom:.55rem; font-size:1rem; }\n.ustring-wp3 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp3 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp3 code { font-family:Consolas,\"Cascadia Mono\",ui-monospace,monospace; font-size:.88em; background:var(--u-bg); border:1px solid var(--u-line); border-radius:5px; padding:.05em .3em; color:var(--u-fg); }\n.ustring-wp3 .uw-cta { background:var(--u-card); border:1px solid var(--u-line); border-left:4px solid var(--u-accent); border-radius:12px; padding:1rem 1.15rem; }\n.ustring-wp3 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp3 .uw-cta p:last-child { margin:0; }\n.ustring-wp3 .uw-btn { display:inline; background:none; color:var(--u-link) !important; text-decoration:underline !important; font-weight:650; padding:0; border-radius:0; margin-top:.15rem; }\n.ustring-wp3 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp3 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp3\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14204 \u2014 a drop built from your reports<\/h2>\n    <p>\n      Nearly every item in this refresh traces back to a beta field report \u2014\n      exactly what the beta is for. <code>CHOOSE()<\/code> and <code>POPUP()<\/code>\n      go wide, control pictures carry Unicode, TXA round-trips in UTF-8, INI files\n      and the registry go wide, a full sweep of the string built-ins closed out the\n      remaining port regressions \u2014 and there&#8217;s a Windows&nbsp;11 fix every desktop\n      app should retest. Already testing? Everything below is new since build 14175.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>Language<\/strong> CHOOSE \u00b7 POPUP \u00b7 pictures \u00b7 built-ins sweep<\/span>\n      <span class=\"uw-pill\"><strong>IDE<\/strong> TXA in UTF-8 \u00b7 %CWVersion 12026<\/span>\n      <span class=\"uw-pill\"><strong>Runtime<\/strong> INI \u00b7 registry \u00b7 Win11 hit-test fix<\/span>\n    <\/div>\n  <\/div>\n\n  <p class=\"uw-lead\">\n    Highlights of this drop \u2014 then the full tester guide, whose\n    <em>&#8220;What&#8217;s new&#8221;<\/em> section and dated <em>&#8220;beta refresh&#8221;<\/em> markers flag\n    exactly what changed since you last read it.\n  <\/p>\n\n  <div class=\"uw-grid\">\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">?:<\/div>\n      <h3>CHOOSE() takes USTRING values<\/h3>\n      <p>\n        A USTRING among CHOOSE&#8217;s values used to make the whole result numeric \u2014\n        even a plain-string alternative came back as <code>'0'<\/code>. Now string\n        values give a string result that keeps every unit, and string-mixed-with-\n        numeric stays numeric, exactly the STRING rules. From Carl B.&#8217;s report.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2630<\/div>\n      <h3>POPUP() is wide<\/h3>\n      <p>\n        Menu text draws its real glyphs \u2014 currency signs, CJK, emoji \u2014 and the\n        item structure (<code>|<\/code>, <code>{}<\/code>, <code>~<\/code>, \u2026) is\n        decided on the wide text itself, so a full-width <code>\uff5c<\/code> in an\n        item no longer splits the menu. All-ANSI POPUPs take exactly the old\n        code path. Also from Carl B.&#8217;s reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">@<\/div>\n      <h3>Control pictures carry Unicode<\/h3>\n      <p>\n        A picture with symbols outside the codepage \u2014 say <code>@n~\u20bf~-15.2<\/code> \u2014\n        set on a LIST column (<code>PROPLIST:Picture<\/code>) or a pictured display\n        STRING now formats with the real symbol and reads back intact. A wide LIST\n        heading also survives a later reformat. (The pictured-ENTRY <em>editor<\/em>\n        is a separate queued step.)\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u270e<\/div>\n      <h3>Runtime caption rewrites go wide<\/h3>\n      <p>\n        <code>{PROP:Text} = &lt;wide value&gt;<\/code> on the caption families \u2014\n        PROMPT, STRING, BUTTON, CHECK, RADIO, TAB, GROUP\/OPTION\/SHEET \u2014 now keeps\n        exact units. This was on the known-limitations list; it&#8217;s off it now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u0192<\/div>\n      <h3>String built-ins, swept against gold<\/h3>\n      <p>\n        Every string built-in was measured two-era against Clarion&nbsp;12 gold, and\n        the remaining beta regressions fixed: <code>DEFORMAT(x)<\/code> with the\n        picture omitted, <code>ERROR()<\/code> returning unclipped padding,\n        <code>NUMERIC()<\/code> rejecting trailing spaces, <code>ALL('',n)<\/code>,\n        wide <code>RIGHT()<\/code>\/<code>CENTER()<\/code> padding \u2014 and wide-to-wide\n        compares now clip trailing spaces like narrow always did.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u21c5<\/div>\n      <h3>TXA export\/import in UTF-8<\/h3>\n      <p>\n        Export application text as <em>Application text, UTF-8<\/em> \u2014 a filetype\n        choice in every export dialog, <code>ClarionCL \/u8 \/ax<\/code> on the\n        command line, or the AutoExport-on-save option. Import auto-detects UTF-8\n        (with or without BOM) and rejects loudly, naming the line, instead of\n        silently mangling. Defaults stay ANSI, byte-identical. From Petar&#8217;s request.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u00a7<\/div>\n      <h3>INI files and the registry go wide<\/h3>\n      <p>\n        <code>GETINI<\/code>\/<code>PUTINI<\/code> accept and return USTRING exactly \u2014\n        and a wide write to a missing <code>.ini<\/code> creates it UTF-16 LE with\n        BOM. The <code>GETREG<\/code> family matches the registry&#8217;s native UTF-16\n        end to end: RegEdit shows your real characters, and reads them back exactly.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">#<\/div>\n      <h3>Templates can gate the Unicode era<\/h3>\n      <p>\n        <code>%CWVersion<\/code> is now <strong>12026<\/strong> \u2014\n        <code>#IF(%CWVersion &gt;= 12026)<\/code> is the idiom for template and\n        third-party code that must also generate for older builds (equality tests\n        against 12000 break; use <code>&gt;=<\/code>). And multi-DLL exports of\n        procedures taking USTRING <em>arrays<\/em> now link.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u229e<\/div>\n      <h3>A Windows 11 fix worth retesting<\/h3>\n      <p>\n        Menus and mouse clicks going dead when another app&#8217;s always-on-top window\n        (Windows&nbsp;11 shell &#8220;island&#8221; windows are the usual trigger) overlapped a\n        Clarion window \u2014 fixed, from a tester&#8217;s precise analysis (thanks, Alexey).\n        If you&#8217;ve seen a Clarion app stop responding to the mouse on Win11, retest\n        on this build.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">?<\/div>\n      <h3>F1 help, rebuilt and current<\/h3>\n      <p>\n        The IDE help (ClarionHelp.chm) is rebuilt: the Unicode-era language surface \u2014\n        USTRING and friends, the new and changed built-ins, the INI\/registry notes \u2014\n        is now in the F1 help itself, not only in the tester documents.\n      <\/p>\n    <\/article>\n  <\/div>\n\n  <div class=\"uw-cta\">\n    <p>\n      <strong style=\"color:var(--u-fg)\">Full tester guide<\/strong> \u2014\n      mental model, conversion rules, DCT import table, screen controls, reports, blobs,\n      SQL \/ SQLite \/ text drivers \/ TopSpeedW \/ Memory \/ IP, recipes, and what to focus\n      on when testing. The guide&#8217;s <em>&#8220;What&#8217;s new&#8221;<\/em> section lists everything in this\n      drop; changes are also flagged inline with dated <em>&#8220;beta refresh&#8221;<\/em> notes.\n    <\/p>\n    <!-- >>> confirm these URLs match the deployed static docs <<< -->\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-Tester-Guide.html\" target=\"_blank\" rel=\"noopener\">Open the full Unicode Tester Guide<\/a>\n    <p style=\"margin:.85rem 0 .35rem; color:var(--u-muted)\">\n      <strong style=\"color:var(--u-fg)\">Report tool authors<\/strong> \u2014\n      the wide generator surface has shipped (<code>IReportGeneratorW<\/code> \u2014 six\n      methods, opt-in, zero break for existing implementors). Format detection, the\n      EMF record set, transition paths per integration style:\n    <\/p>\n    <a class=\"uw-btn\" href=\"https:\/\/softvelocity.com\/docs\/Clarion-Unicode-EMF-Transition-Note.html\" target=\"_blank\" rel=\"noopener\">EMF Page Files \u2014 Transition Note<\/a>\n    <p class=\"uw-note\">\n      Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation \u2014\n      different behavior is exactly what we want to hear about.\n    <\/p>\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh Refresh build 14204 \u2014 a drop built from your reports Nearly every item in this refresh traces back to a beta field report \u2014 exactly what the beta is for. CHOOSE() and POPUP() go wide, control pictures carry Unicode, TXA round-trips in UTF-8, INI files and the registry &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-preview-refreshed-beta-build-14204\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode preview \u2014 refreshed beta build (14204)<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,5],"tags":[46,55],"class_list":["post-1996","post","type-post","status-publish","format-standard","hentry","category-clarion-12","category-clarionnews","tag-c12","tag-clarion-12-unicode-beta"],"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/comments?post=1996"}],"version-history":[{"count":1,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1996\/revisions"}],"predecessor-version":[{"id":1997,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1996\/revisions\/1997"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=1996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=1996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=1996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}