<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Unicode &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/unicode/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Tue, 25 Mar 2025 17:56:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Windows ICU Changes</title>
		<link>https://blog.xojo.com/2025/03/25/windows-icu-changes/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 25 Mar 2025 15:33:53 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[2025r1]]></category>
		<category><![CDATA[DateTime]]></category>
		<category><![CDATA[ICU]]></category>
		<category><![CDATA[Locale]]></category>
		<category><![CDATA[TimeZone]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[Windows 10]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=14613</guid>

					<description><![CDATA[For many years, Xojo included prebuilt ICU libraries (International Components for Unicode) on Windows to ensure consistent Unicode behavior across platforms. However, maintaining and updating&#8230;]]></description>
										<content:encoded><![CDATA[
<p>For many years, Xojo included prebuilt ICU libraries (International Components for Unicode) on Windows to ensure consistent Unicode behavior across platforms. However, maintaining and updating ICU manually required rebuilding it with each release, and users wouldn’t receive updates unless they updated Xojo itself.</p>



<p>With Windows 10 version 1703, Microsoft introduced built-in ICU support, allowing applications to use the system provided ICU instead of bundling their own. By leveraging this, Xojo now benefits from automatic updates, a reduced app footprint, and improved compatibility with the latest Unicode and locale data.</p>



<h2 class="wp-block-heading"><strong>Which parts of the framework use ICU?</strong></h2>



<p>One of the main areas where ICU is used is the DateTime class, which includes Locale and TimeZone support. This helps with formatting dates and times and handling timezone differences reliably. ICU is also used for number formatting and string manipulation, particularly when working with characters like emojis and other complex Unicode symbols.</p>



<h2 class="wp-block-heading"><strong>What benefits can be observed?</strong></h2>



<ul class="wp-block-list">
<li>Fewer DLLs</li>



<li>45MB smaller app sizes</li>



<li>Faster execution times, i.e. DateTime.Now is roughly 10% faster</li>



<li>Daylight saving time no longer requires a rebuild of your Xojo app</li>
</ul>



<h2 class="wp-block-heading"><strong>What are the new requirements?</strong></h2>



<p>As mentioned, Windows began including prebuilt ICU libraries starting with Windows 10 version 1703, so your apps won&#8217;t run on earlier versions. However, if you&#8217;re using Windows Server 2019, you&#8217;ll need to be on at least version 1809.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>By shifting to Windows&#8217; built-in ICU libraries, Xojo has eliminated the need for manual ICU updates and reducing app file sizes. This change means your apps will always have the latest updates for date/time, locale, and character handling, thanks to Windows updates.</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Enhanced Emoji Support: A Look into Graphics and String.Character Improvements</title>
		<link>https://blog.xojo.com/2024/06/26/enhanced-emoji-support-a-look-into-graphics-and-string-character-improvements/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Wed, 26 Jun 2024 15:00:00 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[20242r2]]></category>
		<category><![CDATA[Emoji]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Unicode]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13136</guid>

					<description><![CDATA[Now in Xojo 2024r2, we've enhanced emojis with vivid colors!]]></description>
										<content:encoded><![CDATA[
<p>In the past, people used a two-character symbol : ) to add a smiley to their messages. Nowadays, we have full-color emojis for that purpose, so it&#8217;s time for Xojo to catch up unless we want to be seen as old <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f995.png" alt="🦕" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>



<h2 class="wp-block-heading">Enhanced Emoji Rendering</h2>



<p>While Xojo&#8217;s Graphics class supported rendering emojis on Windows and Linux, their appearance was less appealing.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><div class="wp-block-image">
<figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="454" height="377" data-id="13137" src="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1.png" alt="" class="wp-image-13137" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1.png 454w, https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1-300x249.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="303" height="263" data-id="13143" src="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1Linux-1.png" alt="" class="wp-image-13143" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1Linux-1.png 303w, https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r1Linux-1-300x260.png 300w" sizes="(max-width: 303px) 100vw, 303px" /></figure>
</div></figure>



<p>Now in Xojo 2024r2, we&#8217;ve enhanced emojis with vivid colors!</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex"><div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="454" height="377" data-id="13138" src="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2.png" alt="" class="wp-image-13138" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2.png 454w, https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2-300x249.png 300w" sizes="(max-width: 454px) 100vw, 454px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="303" height="263" data-id="13142" src="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2Linux-1.png" alt="" class="wp-image-13142" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2Linux-1.png 303w, https://blog.xojo.com/wp-content/uploads/2024/06/Emoji2024r2Linux-1-300x260.png 300w" sizes="auto, (max-width: 303px) 100vw, 303px" /></figure>
</div></figure>



<p>You’ll notice that other parts of the Xojo framework that utilize the Graphics class, such as the ListBox, have also benefited from this update.</p>



<h2 class="wp-block-heading">Understanding Emojis at a Deeper Level</h2>



<p>Understanding how emojis are encoded is crucial for grasping how Xojo&#8217;s String type works and how we interpret them. Any text or emoji displayed on the screen can be considered a Unicode sequence or a series of Unicode sequences. At a deeper level, a single Unicode sequence can be constructed from multiple Unicode code points (i.e., bytes of data). For clarity, we&#8217;ll describe one character<strong> </strong>(whether simple text or an emoji) as being composed of Unicode sequence(s).</p>



<p>To demonstrate, let&#8217;s try to understand the woman <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f469.png" alt="👩" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="913" height="628" src="https://blog.xojo.com/wp-content/uploads/2024/06/Woman1.png" alt="" class="wp-image-13149 size-full" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Woman1.png 913w, https://blog.xojo.com/wp-content/uploads/2024/06/Woman1-300x206.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Woman1-768x528.png 768w" sizes="auto, (max-width: 913px) 100vw, 913px" /></figure><div class="wp-block-media-text__content">
<p>This particular woman is not very complex, it is made up of one single Unicode sequence (with corresponding code points).  Our String type can easily handle this one Unicode sequence and reports correctly that the Length of the String is 1 (even though the entire emoji is made up of 4 bytes of code points).</p>
</div></div>



<p>Now let&#8217;s take a look at a more complicated woman <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f469-200d-1f9b0.png" alt="👩‍🦰" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="916" height="631" src="https://blog.xojo.com/wp-content/uploads/2024/06/Woman2-1.png" alt="" class="wp-image-13148 size-full" srcset="https://blog.xojo.com/wp-content/uploads/2024/06/Woman2-1.png 916w, https://blog.xojo.com/wp-content/uploads/2024/06/Woman2-1-300x207.png 300w, https://blog.xojo.com/wp-content/uploads/2024/06/Woman2-1-768x529.png 768w" sizes="auto, (max-width: 916px) 100vw, 916px" /></figure><div class="wp-block-media-text__content">
<p>The only difference visually is that this woman has fiery red hair.  This subtle change in appearance means that to construct this emoji requires not 1, not 2, but 3 distinct Unicode sequences (with a grand total of 11 bytes of code points).</p>
</div></div>



<p>Note that the reported length of the String is 3 Unicode sequences, even though we visually see only one character. This distinction is very important in understanding how String functions work. Xojo&#8217;s String functions inherently deal with Unicode sequences, not individual characters. When you do need to work with complex emojis like these, you will want to utilize our String.Characters API which effectively manages this complexity.</p>



<h2 class="wp-block-heading">An Optimized String.Characters</h2>



<p>Given the prevalence of emojis in everyday text and messages, properly handling them within Xojo&#8217;s String type is crucial. While we initially introduced this feature as String.Characters, it functioned as an iterator until Xojo 2024r2. Now, String.Characters returns a String array, which can still be iterated, ensuring existing code continues to work as before. Additionally, this update offers the added advantage of significantly improved speed, especially on Windows and Linux. Along with this update, we introduced String.CharacterCount, which is useful when you need to know the number of characters in a string without storing them all in an array.</p>



<p>To further understand emojis and their corresponding Unicode sequences, check out this <a href="https://www.unicode.org/emoji/charts/full-emoji-list.html">Full Emoji List</a>.</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Things in 2021 Release 3 You May Have Missed Because You Might Not Have Wanted to Read All 220+ Items in the Release Notes</title>
		<link>https://blog.xojo.com/2021/11/18/things-in-2021-release-3-you-may-have-missed-because-you-might-not-have-wanted-to-read-all-220-items-in-the-release-notes/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 18 Nov 2021 14:00:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Auto-Complete]]></category>
		<category><![CDATA[Code Editor]]></category>
		<category><![CDATA[Declares]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[Windows ARM]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=9608</guid>

					<description><![CDATA[For those of you that don't consider reading through over 220 items as fun as I do, here are a few things I thought I would highlight, in no particular order...]]></description>
										<content:encoded><![CDATA[
<p>Because we make <a href="https://documentation.xojo.com/resources/release_notes/2021r3.html">so many fixes and changes</a> (and even add a few new things) in each Xojo release, it can be daunting to read through the entire <a href="https://documentation.xojo.com/resources/release_notes/2021r3.html">release notes</a>. I encourage you to do so, though, because it&#8217;s fun!</p>



<p>For those of you that don&#8217;t consider reading through over 220 items as fun as I do, here are a few things I thought I would highlight, in no particular order.</p>



<ul class="wp-block-list"><li><strong>Desktop projects now save icon resources as compressed PNGs.</strong> This can greatly reduce binary/xml project file size and also reduce the .xojoresources file size in text projects. In the case of the Eddie&#8217;s Electronics sample project, the binary project dropped from 11MB to 780K, the XML project from 22MB to 1.1MB and the .xojoresources file from 11MB to 388K.</li></ul>



<p></p>



<ul class="wp-block-list"><li>Need to iterate through a String&#8217;s characters in a completely unicode-friendly way (including emojis)? Rather than using the <a href="https://documentation.xojo.com/api/data_types/string.html#string-characters">String.Characters</a> iterator, <strong>use the new <a href="https://documentation.xojo.com/api/text/str.htmling.Codepoints">String.Codepoints</a> iterator which returns one value for each unicode scalar</strong>.</li></ul>



<p></p>



<ul class="wp-block-list"><li> <strong>You can now install Xojo on Windows ARM 64-bit.</strong> Xojo itself remains an Intel x86-64 binary, but Windows ARM has a translation system built-in that will allow Xojo to run. This should allow those of you using ARM Windows in a VM on an Apple Silicon Mac to use Xojo there. If you&#8217;re interested in native Xojo support for Windows ARM, subscribe to <a href="http://&lt;feedback://showreport?report_id=62672&gt;">Feedback Case 62672</a> so you&#8217;ll be notified of updates.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>Auto-complete continues to get smarter and faster</strong>. It can&#8217;t quite write your code for you, but now it does a better job of substituting text and offering suggestions, among other things.</li></ul>



<p></p>



<ul class="wp-block-list"><li><strong>The Code Editor has more improvements</strong>, particularly in the area of code folding. Another improvement is that you can use Go To Location to jump to a specific line in the code using “#50” (for example) in addition to the previously allowed &#8220;50&#8221;.</li></ul>



<p></p>



<ul class="wp-block-list"><li>For use with Declares, there is <strong>now an OSHandle class</strong> that can handle either an Integer or a Ptr.</li></ul>



<p></p>



<ul class="wp-block-list"><li>And although we mentioned it in <a href="https://blog.xojo.com/2021/09/20/the-return-of-building-for-macos-from-windows-and-linux/">another blog post</a>, I&#8217;d still like to remind people that you can again <strong>build your Mac apps from Windows and Linux</strong>. Improvements in the open-source linker project used by Xojo allowed us to bring this feature back. Of course, please continue to test your Mac apps on an actual Mac before you ship them.</li></ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using a Property as a Constant</title>
		<link>https://blog.xojo.com/2017/05/15/constant-property/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Mon, 15 May 2017 14:59:22 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Unicode]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2681</guid>

					<description><![CDATA[Wikipedia says: In computer programming, a constant is a value that cannot be altered by the program during normal execution, i.e., the value is constant.&#8230;]]></description>
										<content:encoded><![CDATA[<p>Wikipedia says:</p>
<blockquote><p>In <a title="Computer programming" href="https://en.wikipedia.org/wiki/Computer_programming">computer programming</a>, a <b>constant</b> is a <a title="Value (computer science)" href="https://en.wikipedia.org/wiki/Value_(computer_science)">value</a> that cannot be altered by the <a title="Computer program" href="https://en.wikipedia.org/wiki/Computer_program">program</a> during normal execution, i.e., the value is <i>constant</i>.</p></blockquote>
<p>In Xojo we have constants that can be defined in code or added to modules, classes, etc. What you&#8217;ll notice about Wikipedia&#8217;s definition of &#8220;constant&#8221; is that it&#8217;s a behavior, not a specific type.</p>
<p>There is another way to define a &#8220;constant&#8221; or &#8220;a value that doesn&#8217;t change throughout the run of your application&#8221;.</p>
<p><span id="more-2681"></span></p>
<p>A <a href="http://developer.xojo.com/userguide/properties$computed-property">computed property</a> with only the Get method defined that returns the same value every time is also &#8220;constant&#8221; in that it won&#8217;t vary as your program runs. It just happens to be labelled as a &#8220;property&#8221; and is also referred to as a &#8220;read-only&#8221; property. But the reality is if you set up a computed property that returns the same value every time you essentially have a &#8220;computed constant&#8221;.</p>
<p>Consider using one the next time you need something like a String or Text that is a series of Unicode code points since you can&#8217;t define one in the Property or Constant Editors without a bit of work (i.e. you can&#8217;t just type in &amp;u21BE or a bunch of unicode code points one after the other).</p>
<p>If there are other values that you need to compute at runtime but remain consistent throughout a run of your application this is a decent way to make that happen.</p>
<p>There are some downsides because this is not a constant as far as the language is concerned. You cannot use it in these ways:</p>
<ul>
<li>as a compile time check using #if</li>
<li>as part of another constant expression</li>
<li>as a default parameter value</li>
<li>as a default property value</li>
<li>as a declare library name</li>
</ul>
<p>There may be other situations as well.</p>
<p>If you truly need an actual constant type, the alternative is to go to <a href="http://unicode.org/">unicode.org</a> and copy and paste the symbols into the Constant Editor. This is a little more work but lets you define a true constant that is a bunch of Unicode code points.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
