{"id":2019,"date":"2026-10-21T13:24:52","date_gmt":"2026-10-21T13:24:52","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=2019"},"modified":"2026-10-21T13:24:52","modified_gmt":"2026-10-21T13:24:52","slug":"clarion-unicode-beta-refresh-14487","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14487\/","title":{"rendered":"Clarion Unicode \u2013 beta refresh (14487)"},"content":{"rendered":"\n<style>\n.ustring-wp6 { --u-fg:#1c1917; --u-muted:#6b6560; --u-line:#e2dcd3; --u-card:#fff; --u-soft:#dbeafe; --u-accent:#1d4ed8; --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-wp6 { --u-fg:#f5f5f4; --u-muted:#a8a29e; --u-line:#3f3a36; --u-card:#1c1917; --u-soft:#1e3a5f; --u-accent:#93c5fd; --u-bg:#121110; --u-link:#7dd3fc; }\n}\n.ustring-wp6 * { box-sizing:border-box; }\n.ustring-wp6 .uw-hero { background:linear-gradient(135deg,#0f2a44 0%,#1e3a5f 45%,#14532d 100%); color:#fafaf9; border-radius:14px; padding:1.75rem 1.5rem 1.5rem; margin:0 0 1.25rem; }\n.ustring-wp6 .uw-eyebrow { display:inline-block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#93c5fd; font-weight:700; margin-bottom:.55rem; }\n.ustring-wp6 .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-wp6 .uw-hero p { margin:0; color:#e7e5e4; font-size:1.05rem; max-width:42rem; }\n.ustring-wp6 .uw-pills { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:1rem; }\n.ustring-wp6 .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-wp6 .uw-pill strong { color:#bfdbfe; font-weight:650; }\n.ustring-wp6 .uw-lead { color:var(--u-muted); margin:0 0 1.1rem; font-size:1rem; }\n.ustring-wp6 .uw-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:.85rem; margin:0 0 1.5rem; }\n.ustring-wp6 .uw-card { background:var(--u-card); border:1px solid var(--u-line); border-radius:14px; padding:1rem 1.05rem 1.1rem; min-width:0; overflow-wrap:anywhere; }\n.ustring-wp6 .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-wp6 .uw-card h3 { margin:0 0 .35rem; font-size:1rem; letter-spacing:-.01em; color:var(--u-fg); }\n.ustring-wp6 .uw-card p { margin:0; color:var(--u-muted); font-size:.92rem; line-height:1.5; }\n.ustring-wp6 .uw-shot { display:block; width:100%; height:auto; margin:.75rem 0 0; border:1px solid var(--u-line); border-radius:8px; }\n.ustring-wp6 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); overflow-wrap:anywhere; word-break:break-word; }\n.ustring-wp6 .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-wp6 .uw-cta p { margin:0 0 .65rem; color:var(--u-muted); }\n.ustring-wp6 .uw-cta p:last-child { margin:0; }\n.ustring-wp6 .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-wp6 .uw-btn:hover { color:var(--u-accent) !important; text-decoration:underline !important; }\n.ustring-wp6 .uw-note { font-size:.88rem; color:var(--u-muted); margin-top:.75rem; }\n<\/style>\n\n<div class=\"ustring-wp6\">\n  <div class=\"uw-hero\">\n    <div class=\"uw-eyebrow\">Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh<\/div>\n    <h2>Refresh build 14487 \u2014 table categories and nine sort orders in the Dictionary Editor, your font on every new window, and a debugger that remembers your session<\/h2>\n    <p>\n      A large dictionary reads as a handful of groups: file its tables into categories by\n      drag, by a checked list or from Table Properties, and sort them by any Table\n      Properties value. Every script shows on an MS Sans Serif window, new windows start\n      with the font you pick, and <code>ClarionCL \/afr<\/code> moves a whole application to\n      another face in one command. Reports print a blob per detail and every band of a\n      Unicode report, the debugger brings back your breakpoints and windows, and browse\n      locators take text in any script. Already testing? Everything below is new since\n      build 14438.\n    <\/p>\n    <div class=\"uw-pills\">\n      <span class=\"uw-pill\"><strong>Dictionary Editor<\/strong> table categories \u00b7 Assign Tables \u00b7 nine sort orders \u00b7 every version in the DCTX<\/span>\n      <span class=\"uw-pill\"><strong>Fonts<\/strong> raster faces show every script \u00b7 default font for new windows \u00b7 <code>ClarionCL \/afr<\/code><\/span>\n      <span class=\"uw-pill\"><strong>Reports<\/strong> <code>TEXT<\/code> \/ <code>IMAGE,USE(blob)<\/code> per detail \u00b7 Unicode bands that grow and collapse \u00b7 <code>HasPreviewer()<\/code><\/span>\n      <span class=\"uw-pill\"><strong>Debugger<\/strong> session memory \u00b7 strings in one row \u00b7 THREAD copies live \u00b7 Step Source<\/span>\n      <span class=\"uw-pill\"><strong>Browses<\/strong> locators in any script \u00b7 USTRING sort fields \u00b7 Initial Values in any script<\/span>\n      <span class=\"uw-pill\"><strong>IDE and compiler<\/strong> Errors pad filters \u00b7 warning 507 finds the missing <code>?<\/code> \u00b7 ClarionCL messages<\/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 lists everything that changed since you last read it.\n  <\/p>\n\n  <div class=\"uw-grid\">\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a4<\/div>\n      <h3>Dictionary Editor: group your tables into categories<\/h3>\n      <p>\n        <em>Add Category<\/em> in the DCT Explorer names a group, and each category lists its own tables below the Pools, Globals and Tables folders. Drag one table or many onto a category, or right-click it and choose <em>Assign Tables<\/em>: a checked list with a filter and Check Shown makes &#8220;every ORDER table&#8221; two clicks, and a Current category column shows where each table sits now. The <em>Category<\/em> drop list on Table Properties does the same for one table. Categories are saved in the dictionary and travel in its DCTX text; an earlier Clarion 12 build imports the same file whole. From a beta request.\n      <\/p>\n      <!-- >>> confirm the image URL after uploading guide-img <<< -->\n      <img decoding=\"async\" class=\"uw-shot\" src=\"https:\/\/softvelocity.com\/docs\/guide-img\/dct-categories.png\" alt=\"The DCT Explorer with table categories and the Assign Tables dialog\" loading=\"lazy\">\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">&#x2195;<\/div>\n      <h3>Dictionary Editor: sort your tables by any Table Properties value<\/h3>\n      <p>\n        The Sort Tables dropdown, the Dictionary menu and the Options page offer nine orders in three groups that follow the Table Properties dialog: Alphabetical, Prefix, Description \u00b7 Driver, Driver Options, Owner Name, Full Path Name \u00b7 Last Modified Date, Creation Date. Driver groups the tables by file driver, Full Path Name groups SQL tables by schema and file tables by folder, Owner Name groups them by connection, and the sort value shows in front of each table name so the grouping reads at a glance. A table you edit moves to its new place at once.\n      <\/p>\n      <img decoding=\"async\" class=\"uw-shot\" src=\"https:\/\/softvelocity.com\/docs\/guide-img\/dct-sort-menu.png\" alt=\"The Sort Tables dropdown with nine orders in three groups\" loading=\"lazy\">\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">A<\/div>\n      <h3>New windows start with your font<\/h3>\n      <p>\n        Tools \u203a Options \u203a Clarion \u203a Applications (AppGen) \u203a &#8220;Default font for new windows&#8221; picks the face, size and style once (shipped Segoe UI 11). Every wizard&#8217;s Theme page offers &#8220;Use my default font for the windows&#8221;, on by default, in both template chains; procedures from the Templates and Defaults tabs, Ctrl-D structures, the designer&#8217;s default window and a new Win32 EXE project start with it too. Report page fonts keep the layout&#8217;s values. Your own templates read it as <code>%DefaultWindowFontName<\/code>, <code>%DefaultWindowFontSize<\/code> and <code>%DefaultWindowFontStyle<\/code>.\n      <\/p>\n      <img decoding=\"async\" class=\"uw-shot\" src=\"https:\/\/softvelocity.com\/docs\/guide-img\/default-font-option.png\" alt=\"Tools, Options, Applications (AppGen): the Default font for new windows group\" loading=\"lazy\">\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\/<\/div>\n      <h3><code>ClarionCL \/afr<\/code>: change an application&#8217;s font face in one command<\/h3>\n      <p>\n        <code>ClarionCL \/afr myapp.app \"MS Sans Serif\" \"Microsoft Sans Serif\"<\/code> replaces the face in every window, every template prompt that holds it and every embed that spells it in quotes. Reports are your separate decision: add the word <code>reports<\/code> as a fourth parameter and the report structures change too. It works on the application itself, with no TXA export and import, prints the count, saves only when something changed, and the AppGen&#8217;s usual <code>myapp.bpp<\/code> keeps the app as it was.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u03a9<\/div>\n      <h3>Every script shows on an MS Sans Serif window<\/h3>\n      <p>\n        A window on <code>FONT('MS Sans Serif')<\/code>, or MS Serif, Courier or System, the raster faces Windows ships for one code page, draws Greek, Cyrillic, Chinese and every other script in its LIST, STRING, TAB, menu, status bar, OPTION caption and MESSAGE, the way the ENTRY and TEXT always did. The runtime draws such text with the metric-compatible TrueType twin of the font (Microsoft Sans Serif for MS Sans Serif), so nothing moves; ANSI text and TrueType fonts paint exactly as before. From a beta report.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25a3<\/div>\n      <h3>Reports: a picture or a memo per row from a BLOB<\/h3>\n      <p>\n        A report <code>TEXT,USE(blob)<\/code> prints the blob&#8217;s text and a report <code>IMAGE,USE(blob)<\/code> its picture, for each detail the row it is printing: a product sheet with each product&#8217;s photo, an order list with each order&#8217;s notes. On a <code>REPORT,UNICODE<\/code> page a <code>BLOB,UNICODE<\/code> prints its exact Unicode text. For embed code and third-party templates, <code>ReportManager.HasPreviewer()<\/code> answers &#8220;is a previewer attached&#8221; whichever previewer the report uses. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u00b6<\/div>\n      <h3>Unicode reports print every band, in every script<\/h3>\n      <p>\n        On a <code>REPORT,UNICODE<\/code> page a detail with a RESIZE TEXT grows to fit its text and a SKIP control collapses its band, exactly as on an ANSI report, and every TEXT prints Greek, Chinese and any other script as typed, whether its text comes from <code>PROP:Text<\/code>, a STRING or a USTRING. Reports without the UNICODE attribute print as before. From a beta report: fixed now.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u25c6<\/div>\n      <h3>The debugger remembers your session and reads your data plainly<\/h3>\n      <p>\n        Breakpoints (saved each time you set or clear one), open source files and the placement of every debugger window come back on the next run of the same program, kept in <code>&lt;program&gt;.dbs<\/code> beside it; your IDE settings file is never touched. A STRING, CSTRING or USTRING is one row with its whole text, Edit Variable takes the whole text, a record reference opens straight to its fields, and a THREAD variable shows the running thread&#8217;s copy, labelled <code>(thread)<\/code>. Step Source steps straight through library calls, and F1 opens the debugger&#8217;s own help. From beta reports.\n      <\/p>\n    <\/article>\n\n    <article class=\"uw-card\">\n      <div class=\"uw-icon\">\u2315<\/div>\n      <h3>Locate and filter browses in any script<\/h3>\n      <p>\n        Type Cyrillic, Greek or Chinese into a Filtered, Entry or Incremental locator over a USTRING column and the browse filters and positions on it, in ABC and in the Clarion chain. A browse or process sorted on a USTRING field gets the string step and locator behaviour, its view filter and range limits quote the value, and an Initial Value in any script primes the record exactly. <code>EntryLocatorClass.Shadow<\/code> is a <code>USTRING(40)<\/code>; regenerate to pick it up. From beta reports.\n      <\/p>\n    <\/article>\n\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, the new-language-surface\n      quick reference, and what to focus on when testing. The guide&#8217;s <em>&#8220;What&#8217;s new&#8221;<\/em>\n      section lists everything in this drop, and every section has its task topic in the\n      F1 help&#8217;s &#8220;How do I &#8230;&#8221; chapter.\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 (<code>IReportGeneratorW<\/code>), format detection, the\n      EMF record set, transition paths per integration style, and the\n      <code>PageTextIndexClass<\/code> text index the previewer searches with:\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      if you see something different, the beta forum is the place.\n    <\/p>\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Clarion \u00b7 Unicode Preview \u00b7 Beta Refresh Refresh build 14487 \u2014 table categories and nine sort orders in the Dictionary Editor, your font on every new window, and a debugger that remembers your session A large dictionary reads as a handful of groups: file its tables into categories by drag, by a checked list or &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/clarion-unicode-beta-refresh-14487\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Clarion Unicode \u2013 beta refresh (14487)<\/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,45,54,53,49],"class_list":["post-2019","post","type-post","status-publish","format-standard","hentry","category-clarion-12","category-clarionnews","tag-c12","tag-clarion-12","tag-clarion-beta-refresh-unicode","tag-topspeedw","tag-ustring"],"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2019","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=2019"}],"version-history":[{"count":1,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2019\/revisions"}],"predecessor-version":[{"id":2020,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/2019\/revisions\/2020"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=2019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=2019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=2019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}