tag:blogger.com,1999:blog-195997752024-03-14T08:31:58.035+01:00Cristian Adam'stechnical weblog.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.comBlogger108125tag:blogger.com,1999:blog-19599775.post-81046602171068162102015-05-10T18:48:00.000+02:002015-05-10T18:49:15.286+02:00Blog movedNew content will be posted at: <a href="http://cristianadam.eu/">http://cristianadam.eu</a>!<br />
<br />
<br />Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-2864840184312745272015-01-17T00:04:00.002+01:002022-07-14T19:43:45.622+02:00Lenovo Fn-Ctrl SwapLenovo laptop keyboards have always had the Fn key as the left most key on the keyboard, like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-0SDWRuAXugI/VLmEgUWstYI/AAAAAAAAC7Q/611UeLCtEqw/s1600/lenovo_fn_ctrl.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="http://1.bp.blogspot.com/-0SDWRuAXugI/VLmEgUWstYI/AAAAAAAAC7Q/611UeLCtEqw/s1600/lenovo_fn_ctrl.jpg" width="320" /></a></div>
If you are a full touch typist (or simply got used with an external computer keyboard) you would expect Ctrl to be the left most key on the keyboard. And this Fn and Ctrl key swap would drive you crazy.<br />
<br />
I used to have a <a href="http://thinkwiki.de/W510">Lenovo W510</a>, which had a bios option to swap Fn and Ctrl keys.<br />
<br />
Recently I've got a <a href="http://thinkwiki.de/SL500">Lenovo SL500</a>, an older, consumer Lenovo model, which with an SSD drive does its job just fine :) The problem with the SL500 is that it doesn't have the Fn and Ctrl key swap in bios!<br />
<br />
The good news is that some people have hacked the Lenovo bios files and swapped the bytes for Fn and Ctrl keys. The hacked bios files can be downloaded from here: <a href="https://web.archive.org/web/20141214161659/http://forum.notebookreview.com/lenovo/474396-fn-ctrl-swap-all-lenovo-laptops-solved.html">FN-CTRL swap on all Lenovo laptops</a>.<br />
<br />
The problem is that when you run WINUPTP.EXE you (might) get an error message like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-YqzPecYnLJQ/VLmJnC4TxEI/AAAAAAAAC7c/lvP8zBE5g2s/s1600/lenovo_firmware_win.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="267" src="http://2.bp.blogspot.com/-YqzPecYnLJQ/VLmJnC4TxEI/AAAAAAAAC7c/lvP8zBE5g2s/s1600/lenovo_firmware_win.png" width="400" /></a></div>
<br />
Bummer.<br />
<br />
Lenovo provides also an ISO image with the firmware update. Probably with a DOS update utility.<br />
<br />
The bad news was that this ISO image was "special". If you burned it to a disk no files were present. If you tried to open it with <a href="http://www.7-zip.org/">7-zip</a> you would get just a Bootable_HardDisk.img file with was 512 bytes in size.<br />
<br />
Since we know there must be a DOS firmware utility involved, the ISO file must be in an old DOS format. <a href="http://www.isobuster.com/">IsoBuster</a> (one can download an evaluation copy) confirmed this:<br />
<br />
<table border="0">
<tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-wSoa6u9FBH4/VLmNEeCsyPI/AAAAAAAAC7k/DZmPBXUOV1Q/s1600/lenovo_firmware_iso_1.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="204" src="http://3.bp.blogspot.com/-wSoa6u9FBH4/VLmNEeCsyPI/AAAAAAAAC7k/DZmPBXUOV1Q/s1600/lenovo_firmware_iso_1.png" width="320" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IxhPgir2nXI/VLmNFx129pI/AAAAAAAAC7w/AI1_sJnEMh0/s1600/lenovo_firmware_iso_2.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="204" src="http://3.bp.blogspot.com/-IxhPgir2nXI/VLmNFx129pI/AAAAAAAAC7w/AI1_sJnEMh0/s1600/lenovo_firmware_iso_2.png" width="320" /></a></div>
</td>
</tr>
<tr>
<td colspan="2"><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-t4x269m6vNE/VLmNEvFQGII/AAAAAAAAC7o/mO8m68R1Au4/s1600/lenovo_firmware_iso_3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="409" src="http://3.bp.blogspot.com/-t4x269m6vNE/VLmNEvFQGII/AAAAAAAAC7o/mO8m68R1Au4/s1600/lenovo_firmware_iso_3.png" width="640" /></a></div>
</td>
</tr>
</tbody></table>
<br />
The bios file is – $0a6a000.fl1, which was also present in the Windows bios update package. Also worth mentioning the PCDOS_JP label, which points to <a href="http://en.wikipedia.org/wiki/IBM_PC_DOS">IBM PC DOS</a> instead of <a href="http://en.wikipedia.org/wiki/MS-DOS">MS DOS</a>. This makes sense since Lenovo used to be part of IBM.<br />
<br />
From the first image we can see that NERO Burning Rom was used to create the ISO file. Since I don't have access to NERO Burning Rom I needed something else.<br />
<br />
ISO format is not compressed, which means that all the files are somewhere in the ISO file. Since I had the original $0a6a000.fl1 and the modified version all I needed was a program which would search and replace the content of the $0a6a000.fl1 file.<br />
<br />
I googled a bit after such an utility, no luck, then decided to roll my own program.<br />
<br />
Below is the C++ source code for my breplace program. You can get x64 binaries for Linux, macOS and Windows from <a href="https://github.com/cristianadam/breplace/releases">GitHub</a>. The "magic" function in this program is <a href="http://en.cppreference.com/w/cpp/algorithm/search">std::search</a> which finds the position of the $0a6a00.fl1 fle in the ISO file.<br />
<br />
<code>
</code>
<br />
<pre><code><span style="color: blue;">#include</span> <vector>
<span style="color: blue;">#include</span> <iostream>
<span style="color: blue;">#include</span> <fstream>
<span style="color: blue;">#include</span> <algorithm>
<span style="color: blue;">#include</span> <string>
size_t readFileToVector(std::istream& file, std::vector<<span style="color: blue;">char</span>>& buf)
{
file.seekg(0, std::ios_base::end);
size_t size = file.tellg();
file.seekg(0, std::ios_base::beg);
buf.resize(size);
file.read(&buf[0], size);
<span style="color: blue;">return</span> size;
}
<span style="color: blue;">int</span> main(<span style="color: blue;">int</span> argc, <span style="color: blue;">char</span>** argv)
{
std::vector<std::string> arguments(argv, argv + argc);
<span style="color: blue;">if</span> (arguments.size() != 5)
{
std::cout << <span style="color: red;">"usage: breplace <file_container> <file_to_be_replaced>"</span>;
std::cout << <span style="color: red;">"<file_to_replace> <dest_file_container>"</span> << std::endl;
<span style="color: blue;">return</span> 1;
}
std::vector<<span style="color: blue;">char</span>> container;
std::ifstream containerFile;
containerFile.open(arguments[1], std::ios_base::binary | std::ios_base::in);
size_t containerSize = readFileToVector(containerFile, container);
std::vector<<span style="color: blue;">char</span>> toBeReplaced;
std::ifstream toBeReplacedFile;
toBeReplacedFile.open(arguments[2], std::ios_base::binary | std::ios_base::in);
size_t fileSize = readFileToVector(toBeReplacedFile, toBeReplaced);
std::vector<<span style="color: blue;">char</span>> toReplace;
std::ifstream toReplaceFile;
toReplaceFile.open(arguments[3], std::ios_base::binary | std::ios_base::in);
readFileToVector(toReplaceFile, toReplace);
std::vector<<span style="color: blue;">char</span>> destination;
std::ofstream destinationFile;
destinationFile.open(arguments[4], std::ios_base::binary | std::ios_base::out);
std::vector<<span style="color: blue;">char</span>>::iterator itpos = std::search(
container.begin(), container.end(), toBeReplaced.begin(), toBeReplaced.end());
<span style="color: blue;">if</span> (itpos == container.end())
{
std::cout << <span style="color: red;">"File's content "</span> << arguments[2] << <span style="color: red;">" was not found"</span> << std::endl;
<span style="color: blue;">return</span> 1;
}
size_t beforeFileSize = std::distance(container.begin(), itpos);
std::cout << <span style="color: red;">"File's content "</span> << arguments[2] << <span style="color: red;">" found at position: "</span>;
std::cout << beforeFileSize << std::endl;
destination.resize(containerSize);
std::copy(container.begin(), container.begin() + beforeFileSize, destination.begin());
std::copy(toReplace.begin(), toReplace.end(), destination.begin() + beforeFileSize);
std::copy(container.begin() + beforeFileSize + fileSize, container.end(),
destination.begin() + beforeFileSize + fileSize);
destinationFile.write(&destination[0], containerSize);
<span style="color: blue;">return</span> 0;
}
</code></pre>
<br />
Then I ran the tool as <tt>breplace.exe 6auj19uc.iso $0A6A000.FL1 $0A6A000.FL1_new 6auj19uc_fn_ctrl_swap.iso</tt>. In order to be sure that things are as they should be I did a file comparison between the two ISO files using <a href="http://www.ghisler.com/">Total Commander</a>:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-6A4lxxWCk5U/VLmT7DrMu_I/AAAAAAAAC8A/XeCwIM9MVYY/s1600/lenovo_firmware_diff.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://4.bp.blogspot.com/-6A4lxxWCk5U/VLmT7DrMu_I/AAAAAAAAC8A/XeCwIM9MVYY/s1600/lenovo_firmware_diff.png" width="540" /></a></div>
<br />
Things looked "legit" thus decided to burn the new ISO image to a disk and proceed with the bios update.<br />
<br />
Everything worked just fine. Now the Lenovo SL500 has the Fn and Ctrl keys swapped! <tt>w00t!</tt><br />
<br />
Before you decide to flash your Lenovo laptop double check the bios / ISO files. This can brick your laptop!<br />
<br />Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-1913536315677231482015-01-06T22:28:00.000+01:002015-02-02T14:02:49.338+01:00(ro) Diacriticele, internetul și UnicodePentru a publica texte în limba română pe internet știm că trebuie să folosim „Unicode”. Conform <a href="http://ro.wikipedia.org/wiki/Unicode">Wikipedia</a> <i>„Unicode (pronunțat în engleză /ˈjuːnɪˌkəʊd/) este un format definit de către Unicode Consortium pentru codarea, stocarea și interpretarea textelor pe suporturi informatice”</i>.
<br />
<br />
Fiecare caracter, simbol are un număr de „ordine”. Mai jos avem numerele de ordine ale caracterelor specifice limbii române:<br />
<ul>
<li>ă - litera latină mică a cu breve - <a href="http://unicode-table.com/en/0103/">U+0103</a></li>
<li>Ă - litera latină mare A cu breve - <a href="http://unicode-table.com/en/0102/">U+0102</a></li>
<li>â - litera latină mică a cu accent circumflex - <a href="http://unicode-table.com/en/00E2/">U+00E2</a></li>
<li>Â - litera latină mare A cu accent circumflex - <a href="http://unicode-table.com/en/00C2/">U+00C2</a></li>
<li>î - litera latină mică i cu accent circumflex - <a href="http://unicode-table.com/en/00EE/">U+00EE</a></li>
<li>Î - litera latină mare I cu accent circumflex - <a href="http://unicode-table.com/en/00CE/">U+00CE</a></li>
<li>ș - litera latină mică s cu virgula dedesubt - <a href="http://unicode-table.com/en/0219/">U+0219</a></li>
<li>Ș - litera latină mare S cu virgulă dedesubt - <a href="http://unicode-table.com/en/0218/">U+0218</a></li>
<li>ț - litera latină mică t cu virgulă dedesubt - <a href="http://unicode-table.com/en/021B/">U+021B</a></li>
<li>Ț - litera latină mare T cu virgulă dedesubt - <a href="http://unicode-table.com/en/021A/">U+021A</a></li>
<li>„ - ghilimele stânga jos (dublu 9 jos) - <a href="http://unicode-table.com/en/201E/">U+201E</a></li>
<li>” - ghilimele dreapta sus (dublu 9 sus) - <a href="http://unicode-table.com/en/201D/">U+201D</a></li>
<li>« - ghilimele ascuțite stânga - <a href="http://unicode-table.com/en/00AB/">U+00AB</a></li>
<li>» - ghilimele ascuțite dreapta - <a href="http://unicode-table.com/en/00BB/">U+00BB</a></li>
<li>– - linia de dialog (en dash) - <a href="http://unicode-table.com/en/2013/">U+2013</a></li>
</ul>
<div>
În trecutul apropiat au existat sisteme de operare care au avut familii de fonturi care nu conțineau ș și ț cu virgulă. Browserele afișau pătrățele, sau literele arătau diferit deoarece alt font a fost folosit pentru afișaj.<br />
<br />
Pentru a combate această problemă există mai multe soluții:<br />
<ul>
<li>nu se folosesc diacritice. Soluție nerecomandată, dar răspândită ajutată de comoditatea celor care scriu astfel de texte. <a href="http://hotnews.ro/">hotnews.ro</a> WTF ?!</li>
<li>se folosesc ş și ţ cu sedilă în loc de ș și ț cu virgulă. Soluție nerecomandată, foarte răspândită ajutată de aranjamentul moștenit de la Microsoft și de soluția „Română cu Alt Dreapta” de la <a href="http://diacritice.ro/">diacritice.ro</a>.</li>
<li>se folosesc ș și ț cu virgulă împreună cu un <a href="http://cristianadam.blogspot.de/2010/10/ro-diacriticele-si-internetul.html">cod javascript</a> care adaptează pagina în funcție de sistemul de operare. <b>Soluție recomandată</b>. <a href="http://ro.wikipedia.org/wiki/Pagina_principal%C4%83">Wikipedia în limba română</a> folosește această tehnică.</li>
<li>se folosesc ș și ț cu virgulă împreună cu un font specific (<a href="http://cristianadam.blogspot.de/2010/04/browsere-moderne-ii.html">@font-face</a>). <b>Soluție recomandată</b>. <a href="http://kmkz.ro/">kmkz.ro</a> folosește familiile de fonturi <a href="http://en.wikipedia.org/wiki/Futura_%28typeface%29">Futura</a> și <a href="http://en.wikipedia.org/wiki/Frutiger">Frutiger</a>, <a href="http://catavencii.ro/">catavencii.ro</a> folosește familia de fonturi <a href="http://en.wikipedia.org/wiki/Open_Sans">Open Sans</a>, ș.a.m.d.</li>
</ul>
<div>
Ultima soluție mi se pare cea mai elegantă. Pagina web va arată la fel pe toate sistemele de operare și există multe familii de fonturi pe care le putem folosi de la <a href="https://www.google.com/fonts">Google Fonts</a> (avut grijă la „Latin Extended”) sau să le avem generate de către <a href="http://www.fontsquirrel.com/tools/webfont-generator">Font Squirrel</a> și să le avem local pe server.</div>
<div>
<br /></div>
<div>
<a href="http://kmkz.ro/">kmkz.ro</a> au ales varianta sigură și au generat fonturile cu Font Squirrel și le-au pus pe server. Dar din când în când au articole care arată bizar. Mai jos am pus capturi de ecran cu această <a href="http://www.kmkz.ro/de-pe-teren/interviu-dezvaluiri/plagiatul-ca-disciplina%CC%86-academica%CC%86-s%CC%A6i-citeva-ipoteze-despre-doctoratul-lui-ponta/">bizarerie</a>:</div>
<div>
<br /></div>
<table>
<tbody>
<tr>
<td><b>Mozilla Firefox 34<br />(bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1128330">#1128330</a>)</b></td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xbpLyOZq8SQ/VKwbcFMopcI/AAAAAAAAC5k/uBngnW-XZv4/s1600/unicode_firefox_34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xbpLyOZq8SQ/VKwbcFMopcI/AAAAAAAAC5k/uBngnW-XZv4/s1600/unicode_firefox_34.png" height="309" width="320" /></a></div>
</td>
</tr>
<tr>
<td><b>Internet Explorer 11<br />(bug <a href="https://connect.microsoft.com/IE/feedback/details/1111623/bad-rendering-of-romanian-characters-when-using-combined-diacritical-marks">#1111623</a>)</b></td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-wSFP0dCfwbg/VKwbfepoHwI/AAAAAAAAC5s/1ab9CLZtbKY/s1600/unicode_ie_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-wSFP0dCfwbg/VKwbfepoHwI/AAAAAAAAC5s/1ab9CLZtbKY/s1600/unicode_ie_11.png" height="285" width="320" /></a></div>
</td>
</tr>
<tr>
<td><b>Google Chrome 39</b></td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Moxzon0X6y0/VKwbhhGXsTI/AAAAAAAAC50/YpfTErjQNKw/s1600/unicode_chrome_39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Moxzon0X6y0/VKwbhhGXsTI/AAAAAAAAC50/YpfTErjQNKw/s1600/unicode_chrome_39.png" height="299" width="320" /></a></div>
</td>
</tr>
</tbody></table>
<br />
Firefox și Internet Explorer afișează ă, ș și ț bizar, ca și cum breve-le și virgula ar fi după ă, ș și ț!<br />
<br />
După un pic de muncă de investigație am aflat de simbolurile diacritice combinatorii din cadrul Unicode - <a href="http://unicode-table.com/en/blocks/combining-diacritical-marks/">Combining Diacritical Marks (U+0300 – U+036F)</a>.<br />
<br />
Astfel putem avea combinațiile (literele din stânga sunt combinații):<br />
<ul>
<li>ă - litera latină mică a și breve-ul - <a href="http://unicode-table.com/en/0061/">U+0061</a> și <a href="http://unicode-table.com/en/0306/">U+0306</a></li>
<li>Ă - litera latină mare A și breve-ul - <a href="http://unicode-table.com/en/0041/">U+0041</a> și <a href="http://unicode-table.com/en/0306/">U+0306</a></li>
<li>â - litera latină mică a și accentul circumflex - <a href="http://unicode-table.com/en/0061/">U+0061</a> și <a href="http://unicode-table.com/en/0302/">U+0302</a></li>
<li>Â - litera latină mare A și accentul circumflex - <a href="http://unicode-table.com/en/0041/">U+0041</a> și <a href="http://unicode-table.com/en/0302/">U+0302</a></li>
<li>î - litera latină mică i și accentul circumflex - <a href="http://unicode-table.com/en/0069/">U+0069</a> și <a href="http://unicode-table.com/en/0302/">U+0302</a></li>
<li>Î - litera latină mare I și accentul circumflex - <a href="http://unicode-table.com/en/0049/">U+0049</a> și <a href="http://unicode-table.com/en/0302/">U+0302</a></li>
<li>ș - litera latină mică s și virgula dedesubt - <a href="http://unicode-table.com/en/0073/">U+0073</a> și <a href="http://unicode-table.com/en/0326/">U+0326</a></li>
<li>Ș - litera latină mare S și virgula dedesubt - <a href="http://unicode-table.com/en/0053/">U+0053</a> și <a href="http://unicode-table.com/en/0326/">U+0326</a></li>
<li>ț - litera latină mică t și virgula dedesubt - <a href="http://unicode-table.com/en/0074/">U+0074</a> și <a href="http://unicode-table.com/en/0326/">U+0326</a></li>
<li>Ț - litera latină mare T și virgula dedesubt - <a href="http://unicode-table.com/en/0054">U+0054</a> și <a href="http://unicode-table.com/en/0326/">U+0326</a></li>
</ul>
Literele arată ca cele necombinate, cum ne putem da seama de diferență? Simplu, copiați o literă în „notepad” și ștergeți-o cu „Backspace”, o să observați că se șterge breve-ul, accentul circumflex sau virgula prima și apoi litera de bază.<br />
<br />
Pagina de la Kmkz se vede aiurea deoarece fonturile generate de Font Squirrel nu includ diacriticele combinatorii (U+0300 – U+036F). Putem verifica asta la <a href="http://www.pkmurphy.com.au/glyphviewer">Glypviewer</a> și apoi introducând <i>http://www.kmkz.ro/wp-content/themes/kmkz_v3/fonts/frutiger/frutigerroce-roman-webfont.woff</i> la „Remote URL”.<br />
<br />
Font Squirrel poate fi configurat să includă diacriticele combinatorii astfel:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-WVhU-91EePc/VKwk2PLJsII/AAAAAAAAC6E/kr3VYq4D6Es/s1600/unicode_font_squirrel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-WVhU-91EePc/VKwk2PLJsII/AAAAAAAAC6E/kr3VYq4D6Es/s1600/unicode_font_squirrel.png" height="135" width="400" /></a></div>
<br />
<a href="https://www.google.com/fonts">Google Fonts</a> nu exportă diacriticele combinatorii. Dacă vreți să folosiți un font de acolo, descărcați-l ca ttf/otf și apoi transformați-l cu <a href="http://www.fontsquirrel.com/tools/webfont-generator">Font Squirrel</a>.<br />
<br />
Google Chrome 39 ar fi trebuit să fi afișat pagina aiurea, dar dintr-un motiv sau altul afișează pagina corect.<br />
<br />
La <a href="http://fileformat.info/">fileformat.info</a> am aflat de exemplu că <a href="http://www.fileformat.info/info/unicode/char/21b/index.htm">ț-ul</a> a fost introdus în Unicode în versiunea 3.0.0 din Septembrie 1999, pe când <a href="http://www.fileformat.info/info/unicode/char/326/index.htm">virgula</a> a fost introdusă în Unicode în versiunea 1.1.0 din Iunie 1993! Tot în versiunea 1.1.0 a fost introdus și <a href="http://www.fileformat.info/info/unicode/char/0163/index.htm">ţ-ul</a> cu sedilă.<br />
<br />
Am decis să testez un Windows XP fără fonturi actualizate să văd cum afișează Internet Explorer 6.0 o <a href="http://goo.gl/qDrvJi">pagină de test</a> (vezi codul sursă la <a href="http://pastebin.com/tuavSbY4">pastebin.com/tuavSbY4</a>):<br />
<br />
<table>
<tbody>
<tr>
<td><b>Familia de fonturi Arial</b>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-etPGPA3dccs/VKw1hXJ_zCI/AAAAAAAAC6Y/GnKvt1cNAGo/s1600/unicode_ie_6_arial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-etPGPA3dccs/VKw1hXJ_zCI/AAAAAAAAC6Y/GnKvt1cNAGo/s1600/unicode_ie_6_arial.png" height="228" width="320" /></a></div>
</td>
</tr>
<tr>
<td><b>Familia de fonturi Tahoma
</b></td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kjxHdMQiAUY/VKw1gojBliI/AAAAAAAAC6U/uVY8J_IsKtY/s1600/unicode_ie_6_tahoma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-kjxHdMQiAUY/VKw1gojBliI/AAAAAAAAC6U/uVY8J_IsKtY/s1600/unicode_ie_6_tahoma.png" height="228" width="320" /></a></div>
</td>
</tr>
</tbody></table>
<br />
<br />
Se poate observa că problema diacriticelor lipsă nu ar fi fost rezolvată cu fonturile care nu au ș și ț cu virgulă (Tahoma fiind printre puținele familii de fonturi care vine cu ș și ț pe Windows XP). Dar avem o îmbunătățire, putem vedea caracterul de bază și nu doar un pătrățel :)<br />
<br />
Ca fapt divers, <a href="http://goo.gl/qDrvJi">pagina de test</a> arată „interesant” în poza de previzualizare a serviciului de scurtare de linkuri <a href="http://goo.gl/">goo.gl</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-5kdZ8uK6bEg/VKzEhJjv3wI/AAAAAAAAC6s/1CrLc7-P9ko/s1600/unicode_goo_gl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-5kdZ8uK6bEg/VKzEhJjv3wI/AAAAAAAAC6s/1CrLc7-P9ko/s1600/unicode_goo_gl.png" /></a></div>
<br />
<br />
În articolul <a href="http://cristianadam.blogspot.de/2012/11/aranjamente-de-tastatura-romaneasca.html">Aranjamente de tastatură românească</a> am pus la dispoziție trei pachete de instalare pentru tastaturile românești folosite în lumea Windows.<br />
<br />
Mai jos aveți aceleași trei pachete de instalare, dar de data aceasta literele (ăĂîÎșȘțȚ) sunt generate folosit diacriticele combinatorii:<br />
<ul>
<li><a href="https://dl.dropboxusercontent.com/u/15362616/Romanian-Keyboard-Combined/rom%C3%A2n%C4%83_standard_diacritice_combinate.exe">Română (Standard)</a> – aranjamentul „primar” din SR-13392:2004</li>
<li><a href="https://dl.dropboxusercontent.com/u/15362616/Romanian-Keyboard-Combined/rom%C3%A2n%C4%83_programatori_diacritice_combinate.exe">Română (Programatori)</a> – aranjamentul „secundar” din SR-13392:2004</li>
<li><a href="https://dl.dropboxusercontent.com/u/15362616/Romanian-Keyboard-Combined/rom%C3%A2n%C4%83_mo%C8%99tenit_diacritice_combinate.exe">Română (Moștenit)*</a> – aranjamentul „moștenit” de la Microsoft</li>
</ul>
<br />
*Aranjamentul „Română (Moștenit)” vine cu unele îmbunătățiri, pentr<br />
u a afla mai multe vezi articolul de mai sus.<br />
<br />
Nu știu ce software au folosit cei de la Kmkz pentru a produce textele cu diacriticele combinate, dar acum se poate face același lucru folosind Windows!<br />
<br />
Nu recomand folosirea diacriticelor combinate, dar este bine să știm despre existența lor :)<br />
<br />
P.S.<b> </b><br />
<b><br /></b>
<b>Cristiana Cobliș</b> a menționat caracterul util al diacritcelor combinate în contextul fonturilor care nu conțin diacriticele directe. <a href="https://www.google.com/fonts">Google Fonts</a> conține multe fonturi care nu conțin diacriticele directe, mai ales ț-ul.<br />
<br />
Am reușit să găsesc un font care îndeplinește această condiție: <a href="http://www.google.com/fonts/specimen/Righteous">Righteous</a>. Mai jos avem o captură de ecran cu Google Chrome 39 și fontul Righteous:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-CUG_7QaZNb0/VK8aanKHWaI/AAAAAAAAC68/GsyUQVy8NFc/s1600/righteous_combined_diacritics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-CUG_7QaZNb0/VK8aanKHWaI/AAAAAAAAC68/GsyUQVy8NFc/s1600/righteous_combined_diacritics.png" height="230" width="400" /></a></div>
<br />
Din păcate doar Google Chrome randează pagina corect. Mozila Firefox 34 sau Internet Explorer 11 au probleme.<br />
<br />
Este mult mai simplu să facem browserele să afișeze corect diacriticele combinate decât să convingem toți autorii de fonturi să adauge literele lipsă, în special ț-ul :)</div>
Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-58425234513080080742014-11-14T00:26:00.001+01:002014-12-10T11:00:35.598+01:00Thank you Google!This is my third <b>"Thank you Google!"</b> article. In the first two articles I've thanked Google for fixing the <a href="http://cristianadam.blogspot.de/2011/05/thank-you-google.html">Droid</a> and then the <a href="http://cristianadam.blogspot.de/2013/08/thank-you-google.html">Roboto</a> font families.<br />
<br />
This time I'm thanking Google for adding a <b>dictionary</b> for the Romanian keyboard in Android thus enabling <a href="https://support.google.com/nexus/answer/2811346?hl=en">gesture typing</a>. I remember seeing gesture typing fist on the <a href="http://www.swype.com/">Swype</a> keyboard.<br />
<br />
I've noticed this feature on my Nexus 5 with the arrival of Android 4.4.4 update.<br />
<br />
Last week I've updated my HP TouchPad to Android 4.4 (CyanogenMod 11) and took a screen shot of "<a href="https://play.google.com/store/apps/details?id=com.google.android.inputmethod.latin&hl=en">Google Keyboard</a>". I've pointed out the elephant in the picture.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-kqeXto470J0/VGU0ijYaZrI/AAAAAAAAC1M/yd1x8VLl5r0/s1600/android_4_4_google_keyboard_romanian.png.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://1.bp.blogspot.com/-kqeXto470J0/VGU0ijYaZrI/AAAAAAAAC1M/yd1x8VLl5r0/s640/android_4_4_google_keyboard_romanian.png.png" width="480" /></a></div>
<br />
Gesture typing makes typing correct Romanian fast and enjoyable! Note that the keyboard has some quirks, which I've reported here: <a href="https://code.google.com/p/android/issues/detail?id=35339">#35339</a>. <br />
<br />
Here is a recording of me gesture typing the Romanian <a href="http://en.wikipedia.org/wiki/Pangram">Pangram</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="640" src="//www.youtube.com/embed/Y_Txb1aw4jg?rel=0;vq=hd720" width="480"></iframe>
</div>
<br />
Microsoft has added to Windows Phone 8.1 gesture typing and the call it shape writing or <a href="http://www.windowsphone.com/en-us/how-to/wp8/settings-and-personalization/typing-shortcuts">Word Flow</a>. As it turns out, Word Flow is supported only for the <a href="http://www.windowsphone.com/en-us/how-to/wp8/basics/feature-and-service-availability">following languages</a>: <br />
<blockquote class="tr_bq">
Arabic, Dutch, English (UK and US), Finnish, French, German,
Italian, Polish, Portuguese (Brazil), Russian, Spanish (Mexico and Spain),
Turkish, Ukrainian.
</blockquote>
It seems Windows Phone keyboard needs more than a dictionary (it does come with a Romanian dictionary) to enable gesture typing. I've made a <a href="https://windowsphone.uservoice.com/forums/101801-feature-suggestions/suggestions/6761845-add-wordflow-for-romanian-language">suggestion</a> to Microsoft to add WordFlow support to Romanian language in Windows Phone. Vote if you want it :)<br />
<br />
<b>Hats off to Google!</b> Shame on you Microsoft!<br />
<br />
<b>P.S.</b> Recently I've learned that Google Keyboard is not available everywhere. For example you will not find Google Keyboard on Play Store in Germany and if you search it in the browser and then open the link you will get this nice image (Tested on a Moto X bought in Germany):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-g5lcUWJjW0g/VIgZJ_xVORI/AAAAAAAAC5A/ScR3RL47a1s/s1600/Screenshot_2014-12-09-20-59-52.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-g5lcUWJjW0g/VIgZJ_xVORI/AAAAAAAAC5A/ScR3RL47a1s/s1600/Screenshot_2014-12-09-20-59-52.png" height="640" width="360" /></a></div>
<br />
It's not only music and videos that Google blocks in Germany, it's also apps!Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-42763218566494011922014-06-20T01:01:00.000+02:002014-06-25T20:54:54.833+02:00Qt Creator - Help is on the wayVisual Studio starting from version 2002 to 2008 had a poor help experience. Hitting F1 in Visual Studio resulted soon in me cursing while looking at the help window's progress bar. Unlike Visual Studio 6 which had a very responsive help system.<br />
<br />
I remember looking with Process Explorer to see what's going under the hood and it was very surprising to see the C# compiler running...<br />
<br />
To overcome this waiting I would open up a web browser and search online. This habit stuck. The web search engine become my best friend.<br />
<br />
Visual Studio 2010 has fixed the help system (some local web server technology if I remember correctly), but I haven't spent much time with it so that I would go back at pressing F1 for help.<br />
<br />
For the past three years I've been using Qt Creator and I was happy with my work flow: code editing, debugging with Qt Creator and online web search for help.<br />
<br />
Therefore I found myself hacking a project using Qt and Qt Creator and searching online after QBrush, QPainter documentation.<br />
<br />
If you search online after QBrush you will most probably (at this moment in time using google) get this: <i>qt-project.org/doc/qt-4.8/qbrush.html</i> I would then click on the link and change it to <i>qt-project.org/doc/qt-5.3/qbrush.html</i>. This became annoying after a while.<br />
<br />
Now I know that Qt Creator already comes with the most up to date Qt documentation (depending of course if you have the most up to date Qt installed).<br />
<br />
But I would have not realized this if my work colleague Miika Järvinen wouldn't have mentioned a small project of his.<br />
<br />
His small project involved having the awesome <a href="http://cppreference.com/">cppreference.com</a> offline C++ documentation available in Qt Creator. Now cppreference has a <a href="http://en.cppreference.com/w/Cppreference:Archives">qch file compiled</a>, but it only shows the main index page when using F1 or searching with "?". If you navigate to the help panel you get an annoying endless "waiting" cursor.<br />
<br />
Miika noticed that the qch file was broken due to invalid paths and he compiled a fixed version, which you can get it from <a href="https://www.dropbox.com/s/d19rdov0jnogjut/cppreference-doc-en-cpp.qch">here</a>. The endless "waiting" cursor is still present though.<br />
<br />
Below you have an example how to use the awesome Qt Creator help system with the equally awesome offline documentation from cppreference.com:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-PPnJjQekihU/U6NnwRmJITI/AAAAAAAACvc/ePqV4LC-gJY/s1600/qt_help.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-PPnJjQekihU/U6NnwRmJITI/AAAAAAAACvc/ePqV4LC-gJY/s1600/qt_help.gif" height="528" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Qt Creator 3.1 on Kubuntu 14.04</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
Now I could be "helped" by Qt Creator and not by the online web search!<br />
<br />
Imagine the productivity kick you can get if you have the browser window closed, or code offline for that matter :)Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-69385957629415873942014-03-02T01:19:00.001+01:002014-03-02T13:38:40.749+01:00Debugging QNX applications using Qt CreatorAccording to Wikipedia <a href="http://en.wikipedia.org/wiki/Qnx">QNX</a> is: "QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market".<br />
<br />
One could get an evaluation copy of QNX 6.5.0SP1 and have a virtual machine running the x86 version of QNX 6.5.0SP1. QNX comes with an Eclipse based IDE, which is nice and all but I'm interested in QtCreator :)<br />
<br />
Ed Langley has a very nice blog entry named - <a href="http://www.edlangley.co.uk/blog/2013/08/setting-up-qnx-for-qtcreator/">Setting up a QNX image for use with Qt Creator.</a><br />
<br />
Qt Creator needs SSH communication with the QNX target, in my case a virtual machine. Ed Langley's blog entry has details on how to get this up and running.<br />
<br />
I've created a "hello world" C++ project. In order to have Qt Creator deploy this hello world application one needs to add the following lines to the pro file:<br />
<br />
<code>
target.path = /home/sam/qnx_test<br />INSTALLS += target </code>
<br />
<br />
Debugging the application using Qt Creator 3.0.1 looked like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-PIUaBvjpgyo/UxJf3yRXy_I/AAAAAAAACdg/0AwdvCat9KU/s1600/qtcreator-3.0.1-qnx650sp1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-PIUaBvjpgyo/UxJf3yRXy_I/AAAAAAAACdg/0AwdvCat9KU/s1600/qtcreator-3.0.1-qnx650sp1.png" height="460" width="640" /></a></div>
<br />
Debugging works out of the box, unfortunately the STL types are not displayed very "pretty".<br />
<br />
QNX 6.5.0SP1 comes with "GNU gdb 6.8 qnx-nto (rev. 506)" which is copyrighted "(C) 2008 Free Software Foundation, Inc.", which is a bit dated.<br />
<br />
Fortunately QNX has an updated version of GDB <a href="http://community.qnx.com/sf/frs/do/viewRelease/projects.toolchain/frs.gdb.gdb_7_5_r791">"gdb-7.5-r791"</a>. Upgrading gdb was just a matter of unpacking gdb-prereq-linux.tgz and linux-gdb-7.5-r791.tar.gz. Now GDB version is "GNU gdb (GDB) 7.5 qnx (rev. 791)" which is copyrighted "(C) 2012 Free Software Foundation, Inc.".<br />
<br />
Unfortunately Qt Creator 3.0.1 was not able to use the debugger. In Qt Creator's "Debugger Log" I was able to find out why:<br />
<br />
<code>&" import binascii\n"<br />&"ImportError: No module named binascii\n"<br />&"Error while executing Python code.\n"</code><br />
<br />
Python from the "gdb-prereq-linux.tgz" file, which ended up being installed here /opt/qnx650/host/linux/x86/usr/python27/, was incomplete. Binascii module should have been available, but was not.<br />
<br />
So I decided to compile my own version of "Python 2.7.2". This was a bit tricky because Qt Creator needs a 32bit version of Python and my Linux installation was 64bit. I've set up a <a href="https://wiki.debian.org/Schroot">schroot</a> environment for a 32bit version of my Linux distribution and done a ./configure, make, make install build of Python 2.7.2.<br />
<br />
I've uploaded my Python 2.7.2 build <a href="https://dl.dropboxusercontent.com/u/15362616/python-2.7.2.tar.xz">here</a>, "installation" should be done like:<br />
<br />
<code>
# tar xJf python-2.7.2.tar.xz -C /opt/qnx650</code><br />
<br />
After upgrading GDB and Python Qt Creator 3.0.1 debugging looked like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-z02h4ncfvX4/UxJwnc1NynI/AAAAAAAACdw/GS82p4Ii5zM/s1600/qtcreator-3.0.1-qnx650sp1-gdb7.5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-z02h4ncfvX4/UxJwnc1NynI/AAAAAAAACdw/GS82p4Ii5zM/s1600/qtcreator-3.0.1-qnx650sp1-gdb7.5.png" height="460" width="640" /></a></div>
<br />
As we can see it's not necessarily better. The STL types are not just not "pretty", this time are not accessible. One could say that's even worse.<br />
<br />
Upgrading Qt Creator to the upcoming 3.1 <a href="https://download.qt-project.org/snapshots/qtcreator/3.1.0-beta/latest/">release</a> improved things a bit:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZLEUgQ3rO3A/UxJzURK5qrI/AAAAAAAACd8/qJdY7utPNN0/s1600/qtcreator-3.0.81-qnx650sp1-gdb7.5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-ZLEUgQ3rO3A/UxJzURK5qrI/AAAAAAAACd8/qJdY7utPNN0/s1600/qtcreator-3.0.81-qnx650sp1-gdb7.5.png" height="460" width="640" /></a></div>
<br />
As you can see std::vector<std::string> was displayed correctly. I don't know why "value" was presented as <not accessible="">. The "Debugger Log" didn't show up any errors.</not></std::string><br />
<br />
Digia announced on 25th of February 2014 the debut of "<a href="http://qt.digia.com/About-Us/News/Digia-debuts-Qt-5-support-for-latest-release-of-QNX-operating-system/">Qt 5 support for latest release of QNX operating system</a>", which means that Qt Creator 3.1 and future versions would support QNX 6.6!<br />
<br />
I hope you will give Qt Creator a try when developing QNX applications!Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-2397469725274058902014-02-15T02:16:00.000+01:002014-10-30T22:37:09.465+01:00(ro) Tastatura românească „3 în 1”<style type="text/css">P { margin-bottom: 0.08in; }</style>
<br />
<div lang="zxx" style="margin-bottom: 0in;">
Când vine vorba de
tastaturi românești multora li se ridică părul în cap. Și asta pe bună dreptate, de vină
este aranjamentul „moștenit” de la Microsoft. Conform <a href="http://www.decatorevista.ro/diacritice/">Decât o Revistă</a> „moștenirea” a început astfel:</div>
<blockquote class="tr_bq">
<div lang="zxx" style="margin-bottom: 0in;">
„Legenda spune că pe la începutul anilor ’90, băieții de la Microsoft au
venit în România să se intereseze cum să-și localizeze sistemul de
operare și au ajuns la Poliție. Destul de logic, pentru că Poliția emite
documentele de stare civilă și se presupune deci că sunt cunoscute
nevoile limbii. Ei bine, la Poliție se pare că au găsit niște mașini de
scris nemțești și așa ne-am pricopsit cu z și y inversate și ă, î, ș, ț
pe tastele cu parantezele pătrate, punct și virgulă și apostrof.”
</div>
</blockquote>
<div lang="zxx" style="margin-bottom: 0in;">
Din 2004 avem un standard
<a href="http://asro.ro/">ASRO</a> de tastatură (SR-13392:2004) actualizat, bazat pe aranjamentul american. Acest standard este implementat pe sistemul de operare Windows începând cu Windows Vista, pentru drivere pentru Windows XP / 2000 vizitați această <a href="http://cristianadam.blogspot.de/2012/11/aranjamente-de-tastatura-romaneasca.html">pagină</a>.<br />
<br />
<span class="titlu"><span class="titlu">Avem și o lege care recomandă folosirea tastaturii românești, și anume ordinul MCTI nr. 414 din 25 septembrie 2006 cu
privire la utilizarea codării standardizate a seturilor de caractere în
documentele în formă electronică,</span> conține la Art. 4: </span><br />
<blockquote class="tr_bq">
<span class="titlu">„Pentru scrierea și procesarea documentelor în formă electronică în limba
română se recomandă a se folosi tastatura românească în conformitate cu
aranjamentul 1 de caractere din standardul SR 13392:2004 sau orice
versiune actualizată a acestuia ori standardul care îl înlocuiește.”</span></blockquote>
Din păcate nici acum, peste aproape
zece ani, nu există pe piața românească tastaturi conforme cu
standardul românesc SR-13392:2004.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
Anul trecut am aflat de
existența firmei americane <a href="http://www.wasdkeyboards.com/">WASD Keyboards</a>. Ei fac tastaturi mecanice la
comandă, tastaturi care pot fi desenate cum vrea clientul. În
felul acesta mi-am comandat o tastatură conformă cu aranjamentul
secundar al standardului <span class="titlu">SR 13392:2004</span>. Am scris despre acestă poveste
aici: <a href="http://cristianadam.blogspot.de/2013/10/ro-tastatura-ro-pro.html">Tastatura RO-PRO</a>.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
În timp ce lucram la
șabloanele pentru tastatură mi-a venit ideea să combin cele două
aranjamente, în felul acesta am obținut o tastatură „3 în 1”
- americană, română standard și română programatori.</div>
<div lang="zxx" style="margin-bottom: 0in;">
Pentru a diferenția cele
două aranjamente am folosit culori. Roșu pentru caracterele
specifice aranjamentului primar / standard și albastru pentru cel secundar / programatori.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
Tastatura „3 în 1” ar
putea satisface 100% nevoia de comunicare a utilizatorului român. Dacă nu scrie cu
diacritice, poate liniștit să ignore tastele colorate și să
folosească partea americană a tastaturii. Dacă scrie cu diacritice
poate să-și seteze în sistemul de operare aranjamentul preferat și
culorile o să-l ghideze spre diacritice, respectiv ghilimelele
românești sau linia de dialog.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
Am mai tratat și problema
traducerii etichetelor de pe tastele de sistem și anume „Esc”,
„Insert”, „Delete”, „Home”, „End”, „Page Down”,
„Page Up”, „Print Screen”, „Scroll Lock”, „Pause”. Nu le-am tradus în română deoarece etichetele ar fi fost prea lungi, am
folosit simboluri. Există standardul ISO/IEC 9995-7:2009 (vezi varianta <a href="http://www.secarica.ro/std/ISO_IEC_FDIS_9995-7_2009.pdf">„final draft”</a>) care tratează
exact această problemă (mulțumesc „Secărică” pentru document / idee). Dacă în marea majoritate a cazurilor
simbolurile erau „ușor” de înțeles, pentru „Esc” și „Pause”
cu greu utilizatorul de rând și-ar fi dat seama ce înseamnă acele
simboluri. Așa că am decis să folosesc alte simboluri mult mai
ușor de înțeles.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
Pentru că „WASD
Keyboards” a început să folosească culori am decis să dau
comandă la o tastatură „3 în 1”. În urma sfaturilor primite
pe lista de <a href="https://groups.google.com/forum/#!forum/diacritice">Diacritice</a> (mulțumesc Mișu', mulțumesc „Pixel”) am schimbat și fontul folosit pentru etichete din <a href="http://en.wikipedia.org/wiki/Roboto">Roboto</a> în <a href="http://en.wikipedia.org/wiki/Fira_Sans">Fira Sans</a>,
font folosit de sistemul de operare Firefox OS.</div>
<div lang="zxx" style="margin-bottom: 0in;">
<br /></div>
<div lang="zxx" style="margin-bottom: 0in;">
Tastatura arată astfel:</div>
<div lang="zxx" style="margin-bottom: 0in;">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-_fgfGrResRg/Uv7Dan5EKVI/AAAAAAAACVs/2rGXqKSeNcE/s1600/tastatura_rom%C3%A2neasc%C4%83_3_%C3%AEn_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-_fgfGrResRg/Uv7Dan5EKVI/AAAAAAAACVs/2rGXqKSeNcE/s1600/tastatura_rom%C3%A2neasc%C4%83_3_%C3%AEn_1.jpg" height="370" width="640" /></a></div>
<br />
Pentru cei dispuși să
plătească pentru o asemenea tastatură, pașii pentru a o
achiziționa sunt:</div>
<ol>
<li>mers la WASD Keyboards pe sait și ales varianta cu <a href="http://www.wasdkeyboards.com/index.php/products/mechanical-keyboard/wasd-v2-87-key-custom-mechanical-keyboard.html#ad-image-0">87</a> sau cu <a href="http://www.wasdkeyboards.com/index.php/products/mechanical-keyboard/wasd-v2-104-key-custom-mechanical-keyboard.html">104</a> taste</li>
<li>selectat tipul de contact
folosit (Cherry Maro, Roșu, Verde, etc)</li>
<li>selectat tipul de atenuator de zgomot</li>
<li>selectat șablonul <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/romix/romix-inkscape-fira-sans-symbol.svg?rev=87">tastaturii românești „3 în 1”</a> </li>
<li>selectat culoarea
tastelor, textul negru din șablon va fi înlocuit cu alb pe tastele
negre.</li>
</ol>
<div lang="zxx" style="margin-bottom: 0in;">
Anul acesta am avut șansa să merg la CES2014, unde am discutat cu reprezentanții câtorva producători de tastaturi: Logitech, Genius și Delux. A rămas că după târg vom discuta pe email. De la Logitech nu am primit niciun răspuns. Cu cei de la Genius am avut un schimb de emailuri concluzionat cu (diacriticele le-am adăugat eu):<br />
<blockquote class="tr_bq">
„Lipsa unei cereri constante din piață pentru tastaturile customizate, după cum sunt sigur că știți, nu ne permite să onorăm cereri punctuale, chiar dacă discutăm de un MOQ de 1000 buc.<br />
<br />
Ar însemna o investiție considerabilă în capacitățile de producție, care nu poate fi susținută „a la long” </blockquote>
<blockquote class="tr_bq">
Am avut o discuție și cu partenerii noștri în acest sens, dar nici acolo nu există un interes major pentru a susține livrări constante.<br />
<br />
În situația dată, mă tem că nu putem avea o soluție la cererea dumneavoastră.”</blockquote>
Din fericire cei de la <a href="http://www.deluxworld.com/en/">Delux</a> s-au arătat mai deschiși la idea de a produce o tastatură românească „3 în 1”. Comanda minimă ar fi de 1000 bucăți. Am înțeles că urmează să primesc o mostră și apoi voi putea da comanda :)<br />
<br />
Pentru finanțare m-am gândit la o campanie pe <a href="http://www.multifinantare.ro/">Multifinanțare</a>. Cu ajutorul unei campanii „virale” pe rețelele de socializare ar trebui să se găsească 1000 de oameni de bine, nu?<br />
<br />
Eu sper că în viitorul apropriat vor exista tastaturi românești conforme cu standardul <span class="titlu">SR 13392:2004 </span>în România!</div>
Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-72896789926525852152014-02-06T12:19:00.002+01:002014-10-30T22:37:39.142+01:00Romanian Virtual KeyboardsIn this post I will talk about the Romanian virtual keyboard on smart phones. I will cover the default virtual keyboard provided by the manufacturers.<br />
<br />
A virtual keyboard is basically an array of buttons which when pressed they generate a character. This sounds easy, right? Well, it's easy when you know which characters to generate. In practice it seems nobody knows very well which characters belong in the Romanian virtual keyboard.<br />
<br />
What is so special about the Romanian virtual keyboard? In addition to the English characters the Romanian virtual keyboard should have:<br />
<ul>
<li>Five extra letters: ăĂ â îÎ șȘ țȚ (U+0103 U+0102 U+00E2 U+00C2 U+00EE U+00CE U+0219 U+0218 U+021B U+021A)</li>
<li>Non breaking hyphen (cratima): ‑ (U+2011)</li>
<li>Romanian quotes: «„”» (U+00AB U+201E U+201D U+00BB)</li>
<li>EN Dash (linia de dialog): – (U+2013)</li>
</ul>
How should we put all of these, or at least the five extra letters, into the keyboard? One way would be to put them like separated buttons, like the Nokia Symbian virtual keyboard:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-b7GQ4BhPaVY/UubTmYpXeRI/AAAAAAAACLg/varFp9_E9X4/s1600/symbian_notes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-b7GQ4BhPaVY/UubTmYpXeRI/AAAAAAAACLg/varFp9_E9X4/s1600/symbian_notes.png" height="400" width="225" /></a></div>
<br />
To overcome this space problem an extra array of buttons pops up when
one long-presses the base character, for example long-press "s" and you will
get a menu containing "ș".<br />
<br />
What do we do with this pop-up menu? Just leave it there? Or select by default
one of the characters and on release activate it?<br />
<br />
I like the second part. I find it very practical to long-press "s" wait for the menu and then
release knowing that I will always get "ș".<br />
<br />
You might have noticed that we have "ă" and "â", which both have "a" as the
base character. The solution would be to put "â" also on long-press "q". This
method is used by the "Romanian Programmers" layout, which is present on
Windows Vista and above. Note that "â" would still be part of the long-press menu for "a".<br />
<br />
My ideal virtual Romanian keyboard would have on long-press a→ă, q→â, i→î, s→ș, t→ț. On long-press space, or other
key, it will generate Non Breaking Hyphen or just the common minus "-". The quotes and the EN Dash could be added to
a symbols menu. In landscape mode, because of the extra space, one could have buttons for the five extra letters.<br />
<br />
I did a quick test for just the five characters on a few smart phones. All the links point to small video recordings on YouTube.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=cVC7OD26Pro">Apple iPhone 5</a> - has support for all five characters. On long-press no
selection of the diacritical mark is made. The same base character is copied
in the menu as default selected character, which makes the release of a long-press useless, one needs
to move the finger to select the character, which in practice is error prone.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=XEaGU6eJNqs">Nokia Lumia 928 - Windows Phone 8</a> - all five characters can be inserted. There is no long-press character generation, just the pop-up menu, which
actually remains open when you release the long-press.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=2ok7sWQ6yrU">Blackberry Z10</a> - all five characters can be inserted. It supports long-press and release but it copies the base character and when you release you don't get the diacritical mark.<br />
<br />
I've left Android at the end because every major OEM has its own virtual keyboard.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=ryGTY71ewt4">Google Nexus 7</a> - Android 4.4.2 comes with the stock Android keyboard,
which can generate all five diacritics. Unlike the others there is
support for long-press and release to generate the diacritical marks. But
not all of them work as expected: a→â, s→ș, t→5, i→8. In my opinion the diacritical mark should be selected on
long-press and not the number. If the user wants numbers (s)he can switch to numbers mode, or long-press the base letter.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=ZBIsrn2Q-4M">Samsung Galaxy S4</a> - Android 4.3 - is the first Android virtual keyboad which
doesn't generate all five diacritics. S Comma Below is missing, instead
there is present the old S Cedilla. Interstingly "t" has on the long-press menu both T Comma Below and old T Cedilla.<br />
<br />
Like the Android stock keyboard
there is support for long-press and release to generate the
diacritical marks and because it has an extra row for numbers it works better
than the stock Android keyboard.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=4qCVYmFkMDA">Samsung Galaxy Note 3</a> - it resembles the Samsung Galaxy S4, but with one major difference - there is no long-press and release support. It behaves like Windows Phone 8, it just leaves the pop-up menu floating.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=Np6QLrzuIbg">LG G2</a> - Android 4.2.2 - it doesn't generate all the five
diacritics - î is missing. It has support for long-press and release, but
instead of generating diacritics they generate symbols: a→@, s→* etc.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=EFKmiepjTjY">HTC One Max</a> - Android 4.3 - it also doesn't generate all diacritics, instead of S and T Comma Below it generates S and T Cedilla. It has support for
long-press and release, but it generates symbols and not diacritics. The
diacritics on the long-press menu are not optimized for Romanian usage,
you have to hunt for them.<br />
<br />
<a href="http://www.youtube.com/watch?feature=player_detailpage&v=TYUjZlL-51U">Sony Xperia Z1 Compact</a> - Android 4.3. It does generate all diacritics, it
has long-press and release to generate the diacritic mark. <b>Sony has the best support
for Romanian in a smartphone's virtual keyboard!</b> Congratulations Sony!
Still no "â" on "q" though.<br />
<br />
Below I've put a summary of all of the above:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OkFegmG3pvU/UvNvgx3gsYI/AAAAAAAACSQ/NDvyLoUEFb0/s1600/smartphones_romanian_keyboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-OkFegmG3pvU/UvNvgx3gsYI/AAAAAAAACSQ/NDvyLoUEFb0/s1600/smartphones_romanian_keyboard.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
At CES2014 I gave feedback to Sony, Samsung, and LG. I hope that they will improve
the Romanian virtual keyboard in their products.<br />
<br />
As a final remark. I haven't mentioned anything about the dictionary which usually comes with a virtual keyboard. I haven't had time to test them. One needs to pay attention to S and T Comma Below, you should not have words containing old S and T Cedilla. Also dictionary needs to know about Romanian for example if I type "cutit" it should present me "cuțit".<br />
<br />
If you have any comments, please feel free to comment below.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-43519272386805911112013-10-12T02:07:00.002+02:002014-10-30T22:38:05.594+01:00(ro) Tastatura RO-PROUneltele de calitate sunt foarte importante în orice domeniu de activitate. Pentru lucrul la calculator avem nevoie nu doar de un calculator performant cu multă memorie, disc dur sprinten, procesor cu cât mai multe nuclee și monitor cât un televizor, avem nevoie și de o tastatură bună.<br />
<br />
<a href="http://www.overclock.net/t/491752/mechanical-keyboard-guide">Tastaturile mecanice</a> sunt considerate cele mai bune tastaturi, au cursă lungă, rezistă la zeci de milioane de apăsări și fac zgomot când tastezi! Nivelul de zgomot depinde de tipul de contact mecanic folosit - <a href="http://www.cherry.de/PDF/EN_CHERRY_MX1A-Gxxx.pdf">Cherry Maro</a>, <a href="http://www.cherry.de/PDF/EN_CHERRY_MX1A-Exxx.pdf">Cherry Albastru</a>, <a href="http://www.cherry.de/PDF/EN_CHERRY_MX1A-1xxx.pdf">Cherry Negru</a>, <a href="http://www.cherry.de/PDF/EN_CHERRY_MX1A-Lxxx.pdf">Cherry Roșu</a> etc. <br />
<br />
Până acum câteva zile am fost fericitul posesor al unei tastaturi <a href="http://shop.daskeyboard.com/products/das-keyboard-ultimate-model-s">Das Keyboard Ultimate Model S</a>. Modelul S, S de la „Silent”, avea contacte Cherry Maro, iar „Ultimate” de la faptul că nu avea nimic inscripționat pe taste.<br />
<br />
Tastatura fără simboluri a fost amuzantă de-a lungul timpului, mai ales cu colegii de muncă care încercau să vadă dacă pot scrie fără să se uite. Totuși am sesizat că mă uit la tastatură atunci când trebuie să apăs tastele funcționale F1..F12, sau „Print Screen”.<br />
<br />
Decizia de a schimba tastatura a venit după ce am citit despre tastatura <a href="http://www.codinghorror.com/blog/2013/08/the-code-keyboard.html">„Code”</a> a lui Jeff Atwood. Nu, nu mi-am cumpărat o tastatură „Code”, ci am decis să-mi fac propria tastatură!<br />
<br />
Eu la calculator folosesc doar configurația de tastatură <b>RO-PRO </b>(<b>RO</b>mână <b>PRO</b>gramatori) în sistemul de operare fie el Linux, fie el Windows. Astfel mi-am zis că tastatura mea va avea aceeași configurație și pe tastatura fizică!<br />
<br />
Am luat <a href="http://www.wasdkeyboards.com/media/wasd-inkscape.svg">șablonul de tastatură</a> de la <a href="http://www.wasdkeyboards.com/">WASD Keyboards</a>, am pornit programul de editare grafică vectorială <a href="http://inkscape.org/">Inkscape</a> și am început să-mi fac de cap.<br />
<br />
Tastatura „Code” folosește fontul <a href="http://en.wikipedia.org/wiki/Helvetica">Helvetica</a> pentru simboluri, șablonul WASD folosește fontul <a href="http://en.wikipedia.org/wiki/Arial">Arial</a>, eu am decis să folosesc fontul <a href="http://en.wikipedia.org/wiki/Roboto">Roboto</a>. Am ales Roboto deoarece arată bine și pentru că Google <a href="http://cristianadam.blogspot.de/2013/08/thank-you-google.html">l-a reparat în Android 4.3</a>! Mulțumim Google!<br />
<br />
Deoarece standardul de tastatură românească (ASRO SR13392:2004) conține două configurații de tastatură, am făcut șabloane pentru amândouă:<br />
<ul>
<li>Română Standard (șablon <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/rostd/rostd-inkscape.svg?rev=82">SVG</a>, previzualizare <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/rostd/rostd-inkscape.pdf?rev=82">PDF</a>)</li>
<li>Română Programatori (șablon <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/ropro/ropro-inkscape.svg?rev=82">SVG</a>, previzualizare <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/ropro/ropro-inkscape.pdf?rev=82">PDF</a>) </li>
</ul>
<br />
Nu am zis nimic de <a href="http://www.wasdkeyboards.com/">WASD Keyboards</a>. Ei se ocupă cu producerea de tastaturi mecanice la comandă. Clientul poate configura ce se va desena pe taste, ce culoare are fiecare tastă în parte, ce metodă de inscripționare a simbolurilor pe taste („Laser Etched” sau „Engraved”) și ce opțiuni de a face tastatura mai silențioasă.<br />
<br />
Pentru a asculta diferențele de zgomot la diversele tipuri de contact mecanic, respectiv metodele de reducere a zgomotului, putem viziona acest <a href="http://www.youtube.com/watch?v=lFkl1Vet1eU">videoclip</a> pus la dispoziție de WASD Keyboards.<br />
<br />
WASD Keyboards ne oferă de asemenea posibilitatea de a alege între o tastatură cu <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-104-key-custom-mechanical-keyboard.html">104 taste</a> și una cu <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-87-key-custom-mechanical-keyboard.html">87 taste</a>, diferența fiind dată de lipsa blocului numeric. Eu am ales varianta cu 87 taste deoarece am observat la Das Keyboard că blocul numeric era tot timpul prăfuit, asta pentru că rareori îl foloseam.<br />
<br />
Pentru cei obișnuiți cu tasta Enter mare și cu tasta Shift stângă mică se poate alege între o tastatură cu <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-105-key-iso-custom-mechanical-keyboard.html">105 taste</a> și una cu <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-88-key-iso-custom-mechanical-keyboard.html">88 taste</a>. Din păcate nu există șabloane de editat la momentul scrierii acestui articol.<br />
<br />
Tastatura mea RO-PRO arată astfel:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-u1riNQxXygU/UliLPtOqOsI/AAAAAAAAB7g/2LfqdpDSZYA/s1600/tastatura_ro_pro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-u1riNQxXygU/UliLPtOqOsI/AAAAAAAAB7g/2LfqdpDSZYA/s640/tastatura_ro_pro.jpg" height="360" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Vabu_gwelrA/UliLP_WNymI/AAAAAAAAB7k/1F2ppXMbfg8/s1600/tastatura_ro_pro_spate.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Vabu_gwelrA/UliLP_WNymI/AAAAAAAAB7k/1F2ppXMbfg8/s640/tastatura_ro_pro_spate.jpg" height="360" width="640" /></a></div>
<br />
<br />
Pe spate putem observa niște comutatoare mici, comutatoare care modifică comportamentul unor taste. <a href="http://www.wasdkeyboards.com/media/v2-user-guide.pdf">Aici</a> avem o descriere a fiecărui comutator. De exemplu comutatorul patru dezactivează tastele Windows (tastele de lânga tasta Alt și AltGr, taste fără simbol în poza de mai sus).<br />
<br />
Vă propun să faceți un experiment, deschideți un editor de texte (Notepad pe Windows), poziționați toate degetele deasupra tastelor 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 și apoi apăsați-le pe toate deodată! Ce apare afișat pe ecran? Cu tastatura de la laptop la mine nu a apărut nimic, dacă am redus numărul de taste apăsate am reușit într-un final să văd „4321”. Cu tastatura WASD RO-PRO am văzut „1234576890”. <br />
<br />
Toate bune și frumoase, dar cât costă? Nota de plată arată astfel: <br />
<ul>
<li>Tastatura în sine - 149,99$</li>
<li>Contacte Cherry Maro - 5$</li>
<li>Transport - 46,80$</li>
<li>Taxa vamală (în Germania) - 22€ </li>
</ul>
<br />
Prețul este un pic piperat (~170€). Alte tastaturi mecanice de „birou” cu contacte Cherry Maro au următoarele prețuri:<br />
<ul>
<li><a href="http://www.getdigital.de/products/Das_Keyboard_Model_S/lng/en">Das Keyboard Ultimate Model S</a> – 129€</li>
<li><a href="http://www.getdigital.de/products/Filco_Majestouch_Profi_Tastatur/lng/en">Filco Majestouch-2 Pro</a> – 169€</li>
<li><a href="http://www.amazon.de/G80-3000-Professional-Keyboard-Crosspoint-Contacts/dp/B0041KJKAG/">Cherry G80-3000 Professional</a> – 92€</li>
<li><a href="http://www.getdigital.de/products/Leopold_Tastatur/lng/en">Leopold FC500R</a> – 99,95€</li>
</ul>
<br />
Tastaturile mecanice de „jucat” cu contacte Cherry Maro au următoarele prețuri: <br />
<ul>
<li><a href="http://www.razerzone.com/store/razer-blackwidow-stealth">Razer BlackWidow Stealth Edition</a> – 99,99€</li>
<li><a href="http://www.cmstore.eu/cm-storm/peripherals/quickfire-pro-cherry-mx-brown-switch/">CM Storm Quick Fire Pro</a> – 99,95€ </li>
<li><a href="http://www.amazon.de/dp/B00A8G1QKE/">Logitech G710+ Mechanical Gaming Keyboard</a> – 149,99€</li>
<li><a href="http://www.getdigital.de/products/Ducky_Keyboard/lng/en">Ducky Shine 3 DK9008</a> – 149€</li>
</ul>
<br />
Tastaturile de „jucat” vin cu iluminare prin tastă, caracteristică ce le face foarte utile pe întuneric. Aceeași caracteristică o are și tastatura „Code”, tastatură produsă de WASD. Din păcate la momentul actual nu se poate alege iluminarea prin tastă ca opțiune pentru tastaturile WASD la comandă.<br />
<br />
WASD Keyboards estimează două săptămâni pentru transport, eu am primit tastatura fix după 14 zile!<br />
<br />
Îi rog pe cei care dau comandă la tastaturi WASD Keyboards (varianta cu <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-87-key-custom-mechanical-keyboard.html">87</a> taste sau <a href="http://www.wasdkeyboards.com/index.php/wasd-v2-104-key-custom-mechanical-keyboard.html">104</a> taste) RO-PRO (șablonul în format <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/ropro/ropro-inkscape.svg?rev=82">SVG</a>) sau RO-STD (șablonul în format <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/rostd/rostd-inkscape.svg?rev=82">SVG</a>) să adauge un comentariu!<br />
<br />
Pentru cei care comandă o tastatură RO-PRO de la WASD Keyboards și nu știu cum să o configureze în Windows<span class="Unicode"></span> 7, respectiv să afle la ce sunt utile tastele „moarte”, le recomand acest tutorial – <a href="http://www.youtube.com/watch?v=nL3fS25tEPY">Tastatura RO-PRO pe Windows 7</a>.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-60430094602195306152013-08-02T20:43:00.000+02:002014-10-30T22:38:38.408+01:00Thank you Google!It's time to thank Google again for fixing the Android fonts in regards of the Romanian language (Android Issue <a href="http://code.google.com/p/android/issues/detail?id=9808">9808</a>).<br />
<br />
<a href="http://cristianadam.blogspot.de/2011/05/thank-you-google.html">First time</a> was for fixing the <a href="http://en.wikipedia.org/wiki/Droid_fonts">Droid</a> font family and now for fixing the <a href="http://en.wikipedia.org/wiki/Roboto">Roboto</a> font family.<br />
<br />
The fix came with the commit <a href="https://android.googlesource.com/platform/frameworks/base/+/e68d87e0920133cb8799bc89abb8d1206c3d7750">e68d87e0920133cb8799bc89abb8d1206c3d7750</a>:<br />
<blockquote class="tr_bq">
<pre class="commit-message">Update Roboto to version 1.200311
This updates Roboto to the latest version. This change should fix a
number of problems, including bug 7306377 (vietnamese o with horn), bug
6679075 (vietnamese u+1ee1), bug 7568194 (cyrillic yeru), and is also on
the critical path of bug 7291977 (t comma accent), bug 8278292 (E
ogonek) and likely others.</pre>
</blockquote>
In order to verify I had to get the fonts from the Android base git repository<br />
<br />
<code>git clone https://android.googlesource.com/platform/frameworks/base.git</code><br />
<br />
This meant downloading a few hounded of megabytes, which in the end produced a "base" directory which was 1.9GB in size :)<br />
<br />
Don't use the <a href="http://www.google.com/fonts/specimen/Roboto">Google Fonts Roboto</a> page, because there the font is not updated, as you can see from the screen shot below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-BZeztKaKEAs/Ufv9BIZYWfI/AAAAAAAAB00/lFBtQ5M5qCE/s1600/google_com_fonts_roboto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-BZeztKaKEAs/Ufv9BIZYWfI/AAAAAAAAB00/lFBtQ5M5qCE/s640/google_com_fonts_roboto.png" height="480" width="640" /></a></div>
<br />
<br />
For your convenience you can download the whole Android fonts folder from <a href="https://dl.dropboxusercontent.com/u/15362616/andoid_4_3_fonts.zip">here</a> (12MB zip file)<br />
<br />
I've opened the Roboto Thin font in Fontforge and as you can see T comma below is right where it should be:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-0JVEgfDFjq0/Ufv8HDsCN1I/AAAAAAAAB0k/KovGfhZ4rXU/s1600/roboto_thin_t_comma_below.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-0JVEgfDFjq0/Ufv8HDsCN1I/AAAAAAAAB0k/KovGfhZ4rXU/s640/roboto_thin_t_comma_below.png" height="468" width="640" /></a></div>
<br />
This would make Android 4.3 the first Android with complete Romanian language support! w00t.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-33178622954989870952013-03-16T23:27:00.003+01:002013-03-17T00:44:06.219+01:00Drive lettersEverybody knows that Windows has mapped letters for drives and partitions. <i>c:\windows</i> or <i>c:\program files</i> are familiar notions to Windows users.<br />
<br />
There is a big probability that you have only two drives on your computer, C: as hard drive and D: as DVD/Blu-Ray drive. The days when one had A: and/or B: drive are long gone. A: and B: were reserved for floppy disk drives. These drive letters can be reused if ones goes to „Administrative Tools -> Computer Management -> Storage -> Disk Management”.<br />
<br />
Here is one for you: Why doesn't Windows use A: and B: for USB flash drives? It doesn't do that even if it doesn't have other letters at disposal! This has proven to be a very effective way of disabling USB flash drives from being mounted, as seen below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-XNPUmAOrZy4/UUTnh8e7-WI/AAAAAAAABws/KwHp_pQfb_s/s1600/drive_letters.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="http://1.bp.blogspot.com/-XNPUmAOrZy4/UUTnh8e7-WI/AAAAAAAABws/KwHp_pQfb_s/s400/drive_letters.png" width="400" /></a></div>
<br />
The USB flash drive was insterted but Windows couldn't mount it! No error message is being given to the user either. Nothing happens!<br />
<br />
Starting with Windows Vista by default one cannot simply create files and directories on drive C:, you either disable the UAC (User Access Control) or comply with this rule.<br />
<br />
I used to have my hard disk partitioned as C: for Windows and other programs and D: for my projects / files. But at times I would have less space on D: and I was forced to move data to C: drive. This was a bit annoying.<br />
<br />
After installing Windows 8 on a fresh SSD drive I've decided to have only one partition and one <i>fake</i> one. I've substituted a directory for a drive letter. <i>"subst c:\users\cristian\D d:"</i> was the magic line.<br />
<br />
In order to change the label of my new D: drive I had to create a registry key (<i>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\D\DefaultLabel</i>) and then I had the label <i>"Data"</i> for D: as I used with my Windows 7 system:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-rbvX_IXdOg0/UUTrE5y9PRI/AAAAAAAABw0/B-6ebA-5gzY/s1600/drive_label.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="http://3.bp.blogspot.com/-rbvX_IXdOg0/UUTrE5y9PRI/AAAAAAAABw0/B-6ebA-5gzY/s400/drive_label.png" width="400" /></a></div>
<br />
Unfortunately Total Commander doesn't know about this trick and it displays the same drive label for D: as it does for C:<br />
<br />
Soon I've noticed that my emulated D: drive was visible just for me, it was not usable for programs ran as Administrator. This turned to be a letdown, I had to run "<i>subst c:\users\cristian\D d:</i>" from a cmd.exe shell ran as Administrator. Couldn't be a way to run this script for both users?<br />
<br />
Fortunately "Andres" had published on <a href="http://stackoverflow.com/questions/5944180/how-do-you-run-a-command-as-an-administrator-from-the-windows-shell">stackoverflow</a> a solution to run a cmd.exe shell script as Administrator. His solution uses a hybrid shell script which is a valid cmd.exe shell script and also a <a href="http://en.wikipedia.org/wiki/Windows_Script_Host">WSH</a> JScript.<br />
<br />
Now I had a script which runs "<i>subst c:\users\cristian\D d:</i>" from my user and also from the Administrator user. Cool! I've put this script in the <i>"Start Up"</i> and now I have a fully functional D: drive!<br />
<br />
<pre><code>@<span style="color: red;">if</span><b><span style="color: #663300;"> (</span></b><span style="color: #999900;">1</span><b><span style="color: #663300;">==</span></b><span style="color: #999900;">1</span><b><span style="color: #663300;">)</span></b> @<span style="color: red;">if</span><b><span style="color: #663300;">(</span></b><span style="color: #999900;">1</span><b><span style="color: #663300;">==</span></b><span style="color: #999900;">0</span><b><span style="color: #663300;">)</span></b> @ELSE
@echo off<b><span style="color: #663300;">&</span></b>SETLOCAL ENABLEEXTENSIONS<b><span style="color: #663300;">
></span></b>nul<span style="color: #999900;"> 2</span><b><span style="color: #663300;">>&</span></b><span style="color: #999900;">1</span><span style="color: #009900;"> "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"</span><b><span style="color: #663300;">||(</span></b>
<b>@subst d<span style="color: #663300;">: %</span>USERPROFILE<span style="color: #663300;">%\</span>D</b>
cscript //E:JScript //nologo "%~f0"
@<span style="color: red;">goto</span><b><span style="color: #663300;"> :</span></b>EOF<b><span style="color: #663300;">
)</span></b>
<b>@subst d<span style="color: #663300;">: %</span>USERPROFILE<span style="color: #663300;">%\</span>D</b>
@<span style="color: red;">goto</span><b><span style="color: #663300;"> :</span></b>EOF
@end @ELSE
ShA<b><span style="color: #663300;">=</span></b><span style="color: #990000;">new</span> ActiveXObject<b><span style="color: #663300;">(</span></b><span style="color: #009900;">"Shell.Application"</span><b><span style="color: #663300;">)</span></b>
ShA<b><span style="color: #663300;">.</span></b>ShellExecute<b><span style="color: #663300;">(</span></b><span style="color: #009900;">"cmd.exe"</span><b><span style="color: #663300;">,</span></b><span style="color: #009900;">"/c \""</span><b><span style="color: #663300;">+</span></b>WScript<b><span style="color: #663300;">.</span></b>ScriptFullName<b><span style="color: #663300;">+</span></b><span style="color: #009900;">"\""</span><b><span style="color: #663300;">,</span></b><span style="color: #009900;">""</span><b><span style="color: #663300;">,</span></b><span style="color: #009900;">"runas"</span><b><span style="color: #663300;">,</span></b><span style="color: #999900;">5</span><b><span style="color: #663300;">);</span></b>
@end </code></pre>
<br />
I like this solution. Now when I boot my machine I see UAC prompting me to run this script, which is also a nice way to inform me that my D: drive is mounted.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com1tag:blogger.com,1999:blog-19599775.post-66770218430349816722012-11-27T00:14:00.001+01:002014-12-08T12:27:07.174+01:00Aranjamente de tastatură româneascăSau altfel spus: <b>Cum scriu cu diacritice pe Windows?</b>
<br />
<br />
Toată lumea știe că trebuie să mergi în „Control Panel” și să configurezi tastatura la „Regional Settings”. Acest lucru este foarte adevărat. Aranjamentul de tastatură <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/win_3_1_romanian.gif">„Romanian”</a> de pe Windows XP a devenit „Romanian (Legacy)”/„Română (Tradițională)” pe Windows Vista/7/8.
<br />
<br />
Windows Vista/7/8 vin și cu aranjamente de tastatură conforme cu standardul românesc de tastatură <a href="http://www.secarica.ro/std/sr_13392_2004_08_03.pdf">SR-13392:2004</a>, și anume <a href="http://www.secarica.ro/kbdro_help_romanian_standard_ro.pdf">„Română (Standard)”</a>, respectiv <a href="http://www.secarica.ro/kbdro_help_romanian_programmers_ro.pdf">„Română (Programatori)”</a>.
<br />
<br />
Cum rămâne cu standardul românesc de tastatură SR-13392:2004 pentru Windows XP? Pentru Windows XP (și alte versiuni mai vechi) soluția vine de la <a href="http://secarica.ro/html/ro_kbd_winxp.html">Cristian Secară</a>. Din păcate soluția oferită necesită urmarea multor pași manuali, pași care par complicați pentru utilizatorul de rând, obișnuit cu pachete de instalare „click, click, click”.
<br />
<br />
<a href="http://diacritice.ro/">diacritice.ro</a> oferă o soluție asemănătoare aranjamentului „Română (Programatori)”. Din păcate soluția folosește <b>diacriticele cu sedilă</b> și nu implementează toată funcționalitatea oferită de standardul de tastatură, și anume linia de dialog, tastele moarte cu ajutorul cărora putem introduce caracterele altor limbi: üäößéèçô etc.
<br />
<br />
Procedura de instalare a lui „rops.exe” de pe diacritice.ro este mai simplă decât la secărică.ro, dar tot necesită la final o vizită la „Control Panel”.
<br />
<br />
Nu se poate ceva și mai simplu, conform cu standardul românesc și cu diacriticele corecte?
<br />
<br />
Cu ajutorul programului Microsoft Keyboard Layout Creator 1.4 am realizat trei pachete de instalare pentru cele trei aranjamente de tastatură:
<br />
<ul>
<li><a href="https://dl.dropbox.com/u/15362616/Romanian-Keyboard/rostd/romanian_standard_keyboard.exe">Română (Standard) </a> – aranjamentul „primar” din SR-13392:2004</li>
<li><a href="https://dl.dropbox.com/u/15362616/Romanian-Keyboard/ropro/romanian_programmers_keyboard.exe">Română (Programatori)</a> – aranjamentul „secundar” din SR-13392:2004</li>
<li><a href="https://dl.dropbox.com/u/15362616/Romanian-Keyboard/romos/romanian_legacy_keyboard.exe">Română (Moștenit)*</a> – aranjamentul „moștenit” de la Microsoft</li>
</ul>
Aranjamentele „Română (Standard)” și „Română (Programatori)” sunt identice cu cele de pe Windows 7.
<br />
<br />
<b>Cele două aranjamente conforme standardului românesc SR-13392:2004 sunt recomandate tuturor care </b><b><b>acum </b>vor să învețe să scrie cu diacritice.</b> Eu personal folosesc aranjamentul „Română (Programatori)”, sau „Română cu Alt Dreapta”. Pentru cei familiarizați cu aranjamentul moștenit de la Microsoft le recomand aranjamentul „Română (Moștenit)”.
<br />
<br />
*Aranjamentul „Română (Moștenit)” vine cu următoarele modificări față de aranjamentul „Română (Legacy)” moștenit de la Microsoft:
<br />
<ul>
<li>Ş și ţ cu sedilă sunt înlocuite cu ș și ț cu virgulă</li>
<li>Ghilimelele „românești” pe prima tastă de pe rândul numeric ([,]), precum în aranjamentul „Română (Standard)”. Din păcate trebuie folosită tasta AltGr + [, respectiv AltGr + Shift + [ pentru a introduce: „”</li>
<li>Linia de dialog (–) pe AltGr + - </li>
<li>Tasta moartă ` (7) este activă, tastă cu ajutorul căreia se pot introduce caracterele: à, è, ù, ì, ò, À, È, Ù, Ì, Ò</li>
<li>Simbolul € pe AltGr + E</li>
</ul>
<b>Notă:</b> toate pachetele de instalare necesită drepturi de administrator. Windows XP necesită instalarea <a href="http://www.microsoft.com/ro-ro/download/details.aspx?id=16083">„Actualizării de fonturi corespunzătoare extinderii Uniunii Europene”</a> pentru afișarea corectă a lui ș și ț cu virgulă.<br />
<br />
Am făcut un film de prezentare a instalării aranjamentului „Română (Moștenit)”:
<br />
<br />
<h3>
Windows XP</h3>
<iframe class="youtube-player" frameborder="0" height="360" src="http://www.youtube.com/embed/HXNMVYgIe20" type="text/html" width="640">
</iframe>
<br />
<h3>
Windows 7</h3>
<iframe class="youtube-player" frameborder="0" height="360" src="http://www.youtube.com/embed/Md6Aw8LH2As" type="text/html" width="640">
</iframe>
<br />
Pentru dezinstalare puteți fie să mergeți în „Control Panel” la „Add-Remove Programs” și de acolo să căutați „Română (Moștenit)”/„Română (Standard)”/„Română (Programatori)”, fie să rulați consecutiv pachetul de instalare.<br />
<br />
Trebuie avut grijă doar ca <b>aranjamentul să nu mai fie cel implicit în sistem</b>, adică să instalați un alt aranjament de tastatură înaintea dezinstalării. Altfel mesajul de eroare poate fi foarte surprinzător pe Windows XP:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-mJRnSFbOYkI/UMGQ5fipelI/AAAAAAAABsY/h_MtzpRdc5U/s1600/uninstall_romanian_legacy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-mJRnSFbOYkI/UMGQ5fipelI/AAAAAAAABsY/h_MtzpRdc5U/s640/uninstall_romanian_legacy.png" height="468" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-FjGand6h-Kk/UMGQlFADFDI/AAAAAAAABsQ/5L28R66Zty4/s1600/uninstall_romanian_legacy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<i>Acest articol a fost republicat aici: <a href="http://tastatura.info/blog/2014/12/07/aranjamente-de-tastatura-romaneasca/">Aranjamente de tastatură românească</a>.</i>Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-51659971135600228262012-11-01T21:24:00.001+01:002014-10-30T22:39:09.633+01:00Tastatura Germano-Română pentru Windows 7De obicei românii stabiliți în Germania folosesc aranjamentul german de tastatură. Un factor important este faptul că toate tastaturile vândute în Germania vin cu acest aranjament.<br />
<br />
Limba română este scrisă fără diacritice, deoarece nu există vreo posibilitate de a introduce diacriticele românești.<br />
<br />
Cu ajutorul programului <a href="http://www.microsoft.com/en-us/download/details.aspx?id=22339">Microsoft Keyboard Layout Creator 1.4</a> am realizat un <a href="https://www.assembla.com/code/cristianadam/subversion/nodes/76/keyboard/de_ro/german_romanian_keyboard.exe?_format=raw">aranjament Germano-Român</a> (201 KB) care are în plus:<br />
<ul>
<li>AltGr + A = ă/Ă</li>
<li>AltGr + S = ș/Ș</li>
<li>AltGr + T = ț/Ț</li>
<li>AltGr + I = î/Î</li>
<li><span style="color: #cc0000;">AltGr + W = â/Â</span></li>
</ul>
Acest aranjament seamănă foarte mult cu aranjamentul secundar al tastaturii române (cel pentru programatori). Singura diferență este că pentru â, am folosit tasta w deoarece tasta q este deja folosită cu AltGr, pentru a genera @.<br />
<br />
Pentru a ilustra cum funcționează vedeți gif-ul animat de mai jos:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-LUUY1ovTSvs/UJLYVPg2v9I/AAAAAAAAAwg/AMc61MiVLl4/s1600/german_romanian3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-LUUY1ovTSvs/UJLYVPg2v9I/AAAAAAAAAwg/AMc61MiVLl4/s640/german_romanian3.gif" height="202" width="640" /></a></div>
De <a href="https://www.assembla.com/code/cristianadam/subversion/nodes/76/keyboard/de_ro/german_romanian_keyboard.exe?_format=raw">aici</a> puteți descărca aranjamentul germano-român de tastatură. Pachetul de instalare (201 KB) suportă Windows 32bit și Windows 64bit și ar trebui să funcționeze pe Windows XP, Vista, 7.<br />
<br />
<b>Tips & Tricks</b><br />
<br />
Tastatura laptopului meu Dell nu are lângă tasta AltGr (Alt dreapta) decât tasta Ctrl. Alte laptopuri gen Lenovo vin cu tastaturi care au tasta meniu contextual lângă tasta AltGr, fapt care în practică dă dureri de cap celor care folosesc tasta AltGr pentru a scrie cu diacritice.<br />
<br />
Tasta meniu contextual este relativ inutilă deoarece putem folosi combinația Shift+F10 pentru a activa meniul contextual, așa că o vom remapa ca tasta AltGr.<br />
<br />
Pentru remapare am folosit programul <a href="http://webpages.charter.net/krumsick/">KeyTweak.</a> Mai jos avem o captură de ecran:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-K6y6C7dQIiE/UJTmyccNNgI/AAAAAAAAAw0/2xUCVoR1neU/s1600/keytweaker.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-K6y6C7dQIiE/UJTmyccNNgI/AAAAAAAAAw0/2xUCVoR1neU/s640/keytweaker.png" height="416" width="640" /></a></div>
<br />
Mult succes în a scrie cu diacritice!Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com1tag:blogger.com,1999:blog-19599775.post-51421408682937030702012-08-31T00:38:00.000+02:002014-02-09T16:26:50.733+01:00Facebook + Unicode ≠ LoveThe theme for the last days is the question marks instead of Unicode characters in various software products. In this case Facebook.<br />
<br />
Facebook? Have you read this article written by Andrei Alexandrescu?<br />
<h1>
<a href="http://www.informit.com/articles/article.aspx?p=1945828">"The Best Programming Advice I Ever Got" </a></h1>
Coming back to question marks. I wanted to post a funny video on Facebook when I've noticed that Facebook gathered as description some undesired question marks:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-qbwBuQMzL60/UD_p5jfiVSI/AAAAAAAAAvs/S1w0wTyp68E/s1600/facebook_so_90s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-qbwBuQMzL60/UD_p5jfiVSI/AAAAAAAAAvs/S1w0wTyp68E/s1600/facebook_so_90s.png" /></a></div>
If you go to the <a href="http://www.bazaconii.com/2012/08/ma-ta-are-cratima.html">funny video</a> (in Romanian) page you can see the caption as: <i>„Primul șlagăr care te învață să scrii corect înjurăturile.”. </i>No question marks there!<br />
<br />
I'm sure there is an explanation why that happened... but it shouldn't have happened. Nobody said that Unicode is easy!<br />
<br />
<b>P.S.</b> It seems Google+ does the same thing:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-fx4wZKx4Bvc/UEmfTImOszI/AAAAAAAAAwE/IQqPXuhvXdU/s1600/google_plus_diacritice.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-fx4wZKx4Bvc/UEmfTImOszI/AAAAAAAAAwE/IQqPXuhvXdU/s1600/google_plus_diacritice.png" /></a></div>
I was prepared to congratulate you Google on doing a better job than Facebook...Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-90036791918018837752012-08-30T00:01:00.000+02:002012-08-30T00:01:57.053+02:00MSI + Unicode ≠ LoveI was upgrading my Libre Office installation to version 3.6.1 when I've noticed the question marks in the installer UI:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zrkLFR1mygw/UD6KHJ32zXI/AAAAAAAAAvU/-RE1Xpv4cGQ/s1600/libreoffice_3_6_1_ro.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-zrkLFR1mygw/UD6KHJ32zXI/AAAAAAAAAvU/-RE1Xpv4cGQ/s1600/libreoffice_3_6_1_ro.png" /></a></div>
<br />
<br />
How can this be? Ș and ț (s and t comma below) characters are present in the Microsoft Sans Serif and Tahoma fonts since Windows 2000.
<br />
<br />
The only explanation is: ANSI installation program. No way! You would think that Windows Installer would be Unicode, but it's not! Michael Kaplan wrote about this weirdness seven years ago: <a href="http://blogs.msdn.com/b/michkap/archive/2005/10/08/478479.aspx">MSI Databases and Unicode?</a><br />
<br />
<a href="http://wix.sourceforge.net/">WiX</a> also states on their <a href="http://wix.sourceforge.net/manual-wix3/codepage.htm">help page</a>: <i>„Top-level elements like Product, Module, Patch, and PatchCreation support a Codepage attribute. You can set this to a valid Windows code page by integer like 1252, or by web name like Windows-1252. UTF-7 and UTF-8 are not officially supported because of user interface issues. Unicode is not supported.”</i><br />
<br />
Programs like <a href="http://7-zip.org/">7-zip</a> use MSI for x64 target because <a href="http://nsis.sourceforge.net/Main_Page">NSIS</a> installer did not have support for x64. NSIS officially doesn't support Unicode and x64, but there are forks which do (<a href="http://www.scratchpaper.com/">Unicode</a> fork, <a href="https://bitbucket.org/dgolub/nsis64">x64</a> fork).<br />
<br />
I've filed a bug (<a href="https://bugs.freedesktop.org/show_bug.cgi?id=54232">#54232</a>) for LibreOffice. I guess they will use the old ş and ţ (s and t cedilla) characters to fix this problem.<br />
<br />
Windows 95 End of Life was 1st of January 2003, Windows 98, Windows 98 Second Edition, and Windows ME End of Life was 1st of April 2007. <br />
<br />
They haven't fixed this problem even though is has been five years since they do not support any ANSI operating system.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-34620650423122591032012-08-18T19:12:00.003+02:002022-06-24T12:51:30.027+02:00Qt Creator Visual C++ keyboard shortcuts<a href="http://en.wikipedia.org/wiki/Qt_Creator">Qt Creator</a> comes with a "MS_Visual_C++.kms" keyboard shortcuts scheme. But this scheme is not based on Visual C++ Professional, but instead of Visual C++ Express.<br />
<br />
The two versions Visual C++ Professional and Visual C++ Express do not have the same keyboard shortcuts scheme. You can download the default keyboard scheme for Visual Studio 2010 C++ <a href="http://www.microsoft.com/en-us/download/details.aspx?id=13189">here</a>.<br />
<br />
If you have used Visual C++ Professional with <a href="http://www.wholetomato.com/default.asp">Visual Assist</a> you will also notice that the Visual Assist shortcuts are also missing. Visual Assist default shortcuts can be viewed <a href="http://www.wholetomato.com/products/features/shortcut.asp">here</a>.<br />
<br />
Visual C++ allows multiple shortcuts for the same command. Unfortunately Qt Creator doesn't allow this and at times I had to choose from multiple shortcuts only one.<br />
<br />
Below is a table with the updates to the "MS_Visual_C++.kms" keyboard shortcuts scheme:<br />
<br />
<table border="0">
<tbody>
<tr>
<td><b>Command</b></td>
<td><b>Label</b></td>
<td><b>Shortcut</b></td>
<td><b>Old Shortcut</b></td>
</tr>
<tr>
<td>Toogle</td>
<td>Toggle Bookmark</td>
<td><b>Ctrl+F2</b></td>
<td>Ctrl+K, Ctrl+K</td>
</tr>
<tr>
<td>OutputPane.nextitem</td>
<td>Next Item</td>
<td><b>F4</b></td>
<td>F6</td>
</tr>
<tr>
<td>OutputPane.previtem</td>
<td>Previous Item</td>
<td><b>Shift+F4</b></td>
<td>Shift+F6</td>
</tr>
<tr>
<td>VisualizeWhitespace</td>
<td>Visualize Whitespace</td>
<td><b>Ctrl+Shift+8</b></td>
<td>Ctrl+E, Ctrl+V</td>
</tr>
<tr>
<td>LowercaseSelection</td>
<td>Lowercase Selection</td>
<td><b>Ctrl+U</b></td>
<td>Alt+U</td>
</tr>
<tr>
<td>UppercaseSelection</td>
<td>Uppercase Selection</td>
<td><b>Ctrl+Shift+U</b></td>
<td>Alt+Shift+U</td>
</tr>
<tr>
<td>Sidebar.Projects</td>
<td>Activate Projects Pane</td>
<td><b>Ctrl+Alt+L</b></td>
<td>Alt+X</td>
</tr>
<tr>
<td>Sidebar.Class View</td>
<td>Activate Class View Pane</td>
<td><b>Ctrl+Shift+C</b></td>
<td><br /></td>
</tr>
<tr>
<td>AddNewFile</td>
<td>Add New...</td>
<td><b>Ctrl+Shift+A</b></td>
<td><br /></td>
</tr>
<tr>
<td>AddExistingFiles</td>
<td>Add Existing Files...</td>
<td><b>Alt+Shift+A</b></td>
<td><br /></td>
</tr>
<tr>
<td>RunToLine</td>
<td>Run to Line</td>
<td><b>Ctrl+F10</b></td>
<td><br /></td>
</tr>
<tr>
<td>AttachToLocalProcess</td>
<td>Attach to Running Local Application...</td>
<td><b>Ctrl+Alt+P</b></td>
<td><br /></td>
</tr>
<tr>
<td>FindUsages</td>
<td>Find Usages</td>
<td><b>Alt+Shift+F</b></td>
<td>Ctrl+Shift+U</td>
</tr>
<tr>
<td>RenameSymbolUnderCursor</td>
<td>Rename Symbol Under Cursor</td>
<td><b>Alt+Shift+R</b></td>
<td>Ctrl+Shift+R</td>
</tr>
<tr>
<td>Methods</td>
<td>Methods and Functions</td>
<td><b>Alt+Shift+S</b></td>
<td><br /></td>
</tr>
<tr>
<td>Methods in current Document</td>
<td>Methods in Current Document</td>
<td><b>Alt+M</b></td>
<td><br /></td>
</tr>
<tr>
<td>JumpToDefinition</td>
<td>Follow Symbol Under Cursor</td>
<td><b>Alt+G</b></td>
<td>Ctrl+F12</td>
</tr>
<tr>
<td>SwitchDeclarationDefintion</td>
<td>Switch Between Method Declaration/Definition</td>
<td><b>Ctrl+F12</b></td>
<td>Ctrl+Shift+F12</td>
</tr>
<tr>
<td>SwitchHeaderSource</td>
<td>Switch Header/Source</td>
<td><b>Alt+O</b></td>
<td>F4</td>
</tr>
<tr>
<td>Files in current project</td>
<td>Files in Current Project</td>
<td><b>Alt+Shift+O</b></td>
<td></td>
</tr>
<tr>
<td>Files in current project</td>
<td>Files in Current Project</td>
<td><b>Alt+Shift+O</b></td>
<td></td>
</tr>
<tr>
<td>CancelBuild</td>
<td>Cancel Build</td>
<td><b>Ctrl+ᡀ�</b></td>
<td></td>
</tr>
</tbody></table>
<br />
Cancel Build should have been <b>Ctrl+Break</b>. I filed this behavior as <a href="https://bugreports.qt-project.org/browse/QTCREATORBUG-4609">Qt Creator Bug #4609</a>.
<br />
<br />
The complete "MS_Visual_C++_Visual_Assist.kms" can be downloaded from <a href="https://gist.github.com/cristianadam/3e226d047435df9be078e9d640bf5bb4" target="_blank">here</a>. With these keyboard shortcuts Qt Creator is a able to pose as a very good substitute to Visual C++ and Visual Assist!Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-21349936066715612942012-08-05T21:25:00.001+02:002021-11-07T17:19:58.683+01:00Romanian diacritic marks in movie subtitles<style type="text/css">.nobr br { display: none }</style>
One important "screen" is the TV screen. In Romania the movies are not dubbed, they are subtitled. This means that all dialogs are presented as text for the viewer to read and understand the movie.<br />
<br />
I remember I wanted to learn how to read because I wanted to read the movie subtitles.<br />
<h3>
</h3>
<h3>
Television</h3>
<br />
By using <a href="http://www.cool-itv.net/">www.cool-itv.net</a>, which uses P2P <a href="http://www.sopcast.com/">SoapCast</a> tehnology to distribute cable TV stations I was able to analyze which Romanian diacritics were used in movie subtitles.<br />
<br />
Below you will see some screenshots of some TV stations:<br />
<div class="nobr">
<table border="0" style="margin-left: -20px; margin-top: 0px;">
<tbody>
<tr>
<td><div class="separator" style="margin-left: 0px; margin-top: 0px;">
<a href="http://4.bp.blogspot.com/-uXOX7HK4F7c/UB6B7XJkVmI/AAAAAAAAArQ/AX7RpjoiE6k/s1600/acasa.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://4.bp.blogspot.com/-uXOX7HK4F7c/UB6B7XJkVmI/AAAAAAAAArQ/AX7RpjoiE6k/s200/acasa.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-dwDR9ak9G8w/UB6B9PZ1oxI/AAAAAAAAArY/T2bGAvfplX8/s1600/animal_planet.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://1.bp.blogspot.com/-dwDR9ak9G8w/UB6B9PZ1oxI/AAAAAAAAArY/T2bGAvfplX8/s200/animal_planet.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Fo06omGVMbc/UB6B_vvL-LI/AAAAAAAAArg/l6xa815PB-s/s1600/antena1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://1.bp.blogspot.com/-Fo06omGVMbc/UB6B_vvL-LI/AAAAAAAAArg/l6xa815PB-s/s200/antena1.png" width="200" /></a></div>
</td>
</tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-rGy4093O30U/UB6CBNltXwI/AAAAAAAAAro/decIunchQKY/s1600/axn.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://2.bp.blogspot.com/-rGy4093O30U/UB6CBNltXwI/AAAAAAAAAro/decIunchQKY/s200/axn.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-IhCJ-M2Z6No/UB6CELCuOqI/AAAAAAAAArw/6OkuXK4VCuc/s1600/discovery.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://3.bp.blogspot.com/-IhCJ-M2Z6No/UB6CELCuOqI/AAAAAAAAArw/6OkuXK4VCuc/s200/discovery.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-10zVBDGYXO8/UB6CG5kW0EI/AAAAAAAAAr4/lLbHWYZR7IM/s1600/film_box.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://4.bp.blogspot.com/-10zVBDGYXO8/UB6CG5kW0EI/AAAAAAAAAr4/lLbHWYZR7IM/s200/film_box.png" width="200" /></a></div>
</td>
</tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-8SPzTg8NaZ0/UB6CJEwjkxI/AAAAAAAAAsA/AoP8viEVF74/s1600/hbo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://4.bp.blogspot.com/-8SPzTg8NaZ0/UB6CJEwjkxI/AAAAAAAAAsA/AoP8viEVF74/s200/hbo.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-9aoS6iH2cRc/UB6CLEMNzuI/AAAAAAAAAsI/iQHWA53-7AI/s1600/history.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://2.bp.blogspot.com/-9aoS6iH2cRc/UB6CLEMNzuI/AAAAAAAAAsI/iQHWA53-7AI/s200/history.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ZGWiplH3gv0/UB6CNSHmXJI/AAAAAAAAAsQ/DdK2ecDSUtM/s1600/kanal_d.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://1.bp.blogspot.com/-ZGWiplH3gv0/UB6CNSHmXJI/AAAAAAAAAsQ/DdK2ecDSUtM/s200/kanal_d.png" width="200" /></a></div>
</td>
</tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Ipg-G4_xTS0/UB6CPVJ5t8I/AAAAAAAAAsY/jqYH0G0vloQ/s1600/national+geographic.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://1.bp.blogspot.com/-Ipg-G4_xTS0/UB6CPVJ5t8I/AAAAAAAAAsY/jqYH0G0vloQ/s200/national+geographic.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Qwggpjge-No/UB6CRD3HarI/AAAAAAAAAsg/LY9pX-8l_LA/s1600/prima.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://4.bp.blogspot.com/-Qwggpjge-No/UB6CRD3HarI/AAAAAAAAAsg/LY9pX-8l_LA/s200/prima.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-d_lmjZtQejE/UB6CTHACwWI/AAAAAAAAAso/LOP4nCzZQlU/s1600/pro_cinema.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://1.bp.blogspot.com/-d_lmjZtQejE/UB6CTHACwWI/AAAAAAAAAso/LOP4nCzZQlU/s200/pro_cinema.png" width="200" /></a></div>
</td>
</tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-_UzzOcR0kMs/UB6CUrlI3gI/AAAAAAAAAss/cekPNznUvwY/s1600/protv.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://3.bp.blogspot.com/-_UzzOcR0kMs/UB6CUrlI3gI/AAAAAAAAAss/cekPNznUvwY/s200/protv.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-PJWiX7YSwOs/UB6CWJmWBOI/AAAAAAAAAs4/auihonUiS_w/s1600/tcm.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://3.bp.blogspot.com/-PJWiX7YSwOs/UB6CWJmWBOI/AAAAAAAAAs4/auihonUiS_w/s200/tcm.png" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Z99cxqKDwFc/UB6CY3F53HI/AAAAAAAAAtA/uUmzvLw9aWc/s1600/tlc.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://4.bp.blogspot.com/-Z99cxqKDwFc/UB6CY3F53HI/AAAAAAAAAtA/uUmzvLw9aWc/s200/tlc.png" width="200" /></a></div>
</td>
</tr>
<tr>
<td colspan="3"><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-zIEGZX2plOM/UB6CarrK83I/AAAAAAAAAtI/32QKhinrGWY/s1600/tvr2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://1.bp.blogspot.com/-zIEGZX2plOM/UB6CarrK83I/AAAAAAAAAtI/32QKhinrGWY/s640/tvr2.png" width="640" /></a> </div>
</td>
</tr>
</tbody></table>
</div>
<br />
Almost all of the TV stations used the old diacritics - <i>S and T cedilla (şŞţŢ)</i> - with the exception of the last one which uses the correct diacritics - <i>S and T comma below (șȘțȚ)</i>.<br />
<br />
The state-owned public TV broadcasters (<b>TVR1</b>, <b>TVR2</b> and so on) did their homework and their software can handle Unicode characters and they are using the correct Romanian diacritics. <i>Chapeau!</i><br />
<br />
At least some of them use the same diacritic: <i>Discovery</i>, <i>Animal Planet</i>, <i>ProTV</i>, <i>Pro Cinema</i>, and they did not mix s cedilla with t comma below like <i>HBO</i><i>, Antena1</i>, and <i>Kanal D</i>.<br />
<br />
One interesting case was <i>TCM</i> which used A Caron (ǎ) instead of A Breve (ă). Also Prima used A Tilde (<span class="st">ã) in their promotional clips.</span><br />
<br />
The usage of the old diacritics is due to the fact that the specialized TV software used is some old software written before Microsoft started promoting Unicode.<br />
<br />
Old software and subtitle standard from 1991 is responsible to the major usage of incorrect Romanian diacritics. The 1991 standard is the EBU (European Broadcasting Union) <a href="http://tech.ebu.ch/docs/tech/tech3264.pdf">TECH. 3264-E </a>which doesn't support Unicode characters.<br />
<br />
Hopefully all this will change with the arrival of the new EBU-TT Subtitling Specification which was announced on <a href="http://www3.ebu.ch/cms/en/sites/ebu/contents/news/2012/07/new-ebu-subtitling-specification.html">31st of July 2012</a>. In a couple of years all TV stations will be using the correct Romanian diacritics.<br />
<br />
<h3>
AVI / MKV Movies</h3>
<br />
The same grim story is presented in the underground movie subtitles scene, for example if you go to <a href="http://www.opensubtitles.org/ro">http://www.opensubtitles.org/ro</a> and download for example <a href="http://www.opensubtitles.org/ro/search/imdbid-1034314/sublanguageid-rum">Iron Sky Romanian subtitle</a> you will get only Windows-1250 codepage subtitles. By the way <a href="http://www.imdb.com/title/tt1034314/">Iron Sky</a> is a cool movie :)<br />
<br />
Nobody uses Unicode to encode the subtitles, which would not require the user to configure their media player of choice to Windows-1250 / Central European / ISO-8859-2 as default code page for subtitles.<br />
<br />
I've created a small Windows tool (133KBytes) which automatically converts subtitles from old diacritics to correct diacritics. The tool can be downloaded from <a href="https://drive.google.com/file/d/0B2PomaBW0fHRNnJLbThrbExBekk/view?usp=sharing&resourcekey=0-BcSvtzcZ9bOqnq6Vj-hX5Q">here</a>.<br />
<br />
Below you have a screen shot of the tool: <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-93Vf3IHId3U/UB7Hj9tJtqI/AAAAAAAAAtc/9f8Elnq1PXwo29OmIhiwwJZlPmVmTVdnQCPcB/s1600/subtitrari_unicode.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-93Vf3IHId3U/UB7Hj9tJtqI/AAAAAAAAAtc/9f8Elnq1PXwo29OmIhiwwJZlPmVmTVdnQCPcB/s1600/subtitrari_unicode.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://drive.google.com/open?id=0B2PomaBW0fHRNnJLbThrbExBekk"> </a></div>
I hope Unicode subtitles will be more popular in the future. There is no need to stick to ANSI code pages!<br />
<br />Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com8tag:blogger.com,1999:blog-19599775.post-35709454539360817432012-06-18T17:28:00.004+02:002013-07-07T18:08:16.452+02:00Portable qmakeAccording to Wikipedia <a href="http://en.wikipedia.org/wiki/Qmake" target="_blank">qmake</a><i> "is an utility that automates the generation of Makefiles [...] It integrates with the Qt framework"</i><br />
<br />
You can also use it without Qt though, this is achieved by adding the following line <tt>CONFIG -= qt</tt> in the *.pro file.<br />
<br />
In order to use qmake in a portable way one needs to:<br />
1. Copy the qmake executable, which is statically linked, into a folder named <tt>bin</tt><br />
2. Create a qt.conf file near to qmake.exe containing just the following:<br />
<tt>[Paths]</tt><br />
<tt> HostPrefix=..</tt><br />
3. Copy the <tt>mkspecs</tt> folder<br />
<br />
I have copied all the above in <tt>C:\Program Files (x86)\qmake-2.01a\</tt> and put a <tt>qmake.cmd</tt> in a <tt>bin</tt> folder which I have in path. Zipping the above folder generated an <a href="http://subversion.assembla.com/svn/cristianadam/tools/qmake-2.01a/qmake-2.01a.zip">qmake-2.01a.zip</a> which is just 996 KB in size.<br />
<br />
<tt>qmake.cmd</tt> is nothing more than just: <tt>@"c:\Program Files (x86)\qmake-2.01a\bin\qmake.exe" %*</tt><br />
<br />
qmake isn't just an utility that automates the generation of Makefiles it can also generate Visual C++ project files. This is as easy as running: <tt>qmake -tp vc</tt><br />
<br />
You can find all that qmake can do in the qmake <a href="http://qt-project.org/doc/qt-5.0/qtdoc/qmake-manual.html" target="_blank">Manual</a>.<br />
<br />
You can also use qmake without knowing too much about it, it can generate a project (pro) file from existing code.<br />
<br />
Let's say you have this hello.cpp<br />
<code>
</code>
<br />
<pre><code><span style="color: blue;">#include</span> <windows.h>
<span style="color: blue;"></span>
<span style="color: blue;">int</span> __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, <span style="color: blue;">int</span>)
{
::MessageBox(0, L<span style="color: red;">"qmake works!"</span>, L<span style="color: red;">"info"</span>, MB_OK | MB_ICONINFORMATION);
<span style="color: blue;">return</span> 0;
}
</code></pre>
<code>
</code> <br />
1. Put this <tt>hello.cpp</tt> in a <tt>test</tt> folder<br />
2. Type <tt>qmake -project</tt>, which will generate a <tt>test.pro</tt> file<br />
3. Edit <tt>test.pro</tt> and add <tt>CONFIG -= qt</tt> <br />
4. Type <tt>qmake -tp vc</tt>, which will generate a Visual C++ project file<br />
<br />
There you have it, starting from a cpp file and ending up with a Visual C++ project file in three easy steps!<br />
<br />
By running <tt>release\test.exe</tt> on a Windows 7 you will see the following:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-mEZR4XUlOho/T-AckjEYrnI/AAAAAAAAAqM/LEVwRDnjkbI/s1600/hello_qmake.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-mEZR4XUlOho/T-AckjEYrnI/AAAAAAAAAqM/LEVwRDnjkbI/s1600/hello_qmake.png" /></a></div>
<br />
The <tt>release\test.exe</tt> has 7KB. Let's say I want to deploy this executable on other machines, do I have some dependencies? By using <tt>dumpbin</tt> we can answer this question.<br />
<pre><code>
$ dumpbin /imports test.exe | findstr ".dll"
USER32.dll
<b>MSVCR90.dll</b> 96 __dllonexit
KERNEL32.dll</code></pre>
<br />
How do we get rid of the <tt>MSVCR90.dll</tt> dependency? It seems this is as complicated as editing a text file, namely <tt>qmake-2.01a\mkspecs\win32-msvc2008\qmake.conf</tt>. And there change <tt>-MD</tt> and <tt>-MDd</tt> into <tt>-MT</tt> and <tt>-MTd</tt>. Now <tt>release\test.exe</tt> has increased to 41KB but there is no <tt>MSVCR90.dll</tt> dependency.<br />
<br />
If you don't feel comfortable with editing this "system" file, you can copy it and then include the modified <tt>qmake.conf</tt> file in your pro file. Or you can use the <tt>"-spec"</tt> command line parameter to point qmake to the modified <tt>qmake.conf</tt> file. <br />
<br />
As you can see qmake is very flexible and it can accommodate to a large number of compilers, just have a look in mkspecs folder. <br />
<br />
If you like qmake, you will also like jom - <i>the parallel make tool for Windows</i>, which can be obtained from <a href="http://qt-project.org/wiki/jom" target="_blank">here</a>.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-26787742997451789762012-04-19T08:24:00.000+02:002014-10-30T22:39:51.028+01:00(ro) Tastaturi românești IIÎn articolul <a href="http://cristianadam.blogspot.de/2011/05/ro-tastaturi-romanesti.html">Tastaturi românești</a> am trecut în revistă oferta marilor firme de calculatoare Dell, HP, Lenovo, și Acer cu privință la tastatura românească.<br />
<br />
Nici una din marile firme nu avea în ofertă o tastatură conformă standardului românesc <strike>SR-13392:2004</strike>, standard implementat de Microsoft o dată cu Windows Vista.<br />
<br />
În articol nu am analizat și oferta firmei Fujitsu, cu toate că am menționat că Fujitsu Siemens avea în ofertă o tastatură cu primul standard românesc de tastatură SR-13392:1998.<br />
<br />
Ei bine firma Fujitsu are în ofertă o tastatură conformă standardului românesc <strike>SR-13392:2004</strike>, și anume KB400 RO, pe numele ei complet S26381-K551-L433. Tastatura KB400 RO poate fi cumpărată de la 8.33€ conform <a href="http://geizhals.at/eu/?in=&fs=S26381-K551-L433">geizhals</a><br />
<br />
Pe forumul sitului <a href="http://secarica.ro/forum/viewtopic.php?t=76&start=16">secarica.ro</a> <b>dorin </b>a publicat câteva poze cu această tastatură, poze pe care le-am inclus mai jos:<br />
<br />
<table border="0">
<tbody>
<tr>
<td colspan="2"><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-_rwS56Ra3CA/T4-oaa-5PmI/AAAAAAAAAk8/awfxCybn8L8/s1600/P1020742.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-_rwS56Ra3CA/T4-oaa-5PmI/AAAAAAAAAk8/awfxCybn8L8/s400/P1020742.jpg" height="300" width="400" /></a></div>
</td></tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Rk6NdC13mz0/T4-obQSSuGI/AAAAAAAAAlA/hZKX8RW8Yts/s1600/P1020743.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-Rk6NdC13mz0/T4-obQSSuGI/AAAAAAAAAlA/hZKX8RW8Yts/s200/P1020743.jpg" height="150" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-r3A6RCOEQS4/T4-ocVv9FII/AAAAAAAAAlI/D2e_XSrDGkg/s1600/P1020744.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-r3A6RCOEQS4/T4-ocVv9FII/AAAAAAAAAlI/D2e_XSrDGkg/s200/P1020744.jpg" height="150" width="200" /></a></div>
</td>
</tr>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-MPtcZ-Kka1I/T4-odMKukUI/AAAAAAAAAlQ/n9e7o2i86aM/s1600/P1020745.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-MPtcZ-Kka1I/T4-odMKukUI/AAAAAAAAAlQ/n9e7o2i86aM/s200/P1020745.jpg" height="150" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-MXVhcRwGQLw/T4-odzk5CPI/AAAAAAAAAlY/Selcz4ljvTA/s1600/P1020747.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-MXVhcRwGQLw/T4-odzk5CPI/AAAAAAAAAlY/Selcz4ljvTA/s200/P1020747.jpg" height="150" width="200" /></a></div>
</td>
</tr>
</tbody></table>
<br />
Chiar dacă observăm că tastatura are ș și ț cu sedilă și că ă-ul nu are căciulița prea rotundă, avem de-a face cu o tastatură conform standardului, poate firma Fujitsu va corecta acest sughiț într-o versiune ulterioară.<br />
<br />
Din păcate avem de-a face doar cu aranjamentul primar, nu și cu cel secundar (cel care generează diacriticele ținând apăsată tasta AltGr), aranjament pe care eu îl prefer.<br />
<br />
Nu ne rămâne decât să ne înclinăm în fața firmei Fujitsu, prima mare firmă de calculatoare care produce tastaturi conform standardului românesc!<br />
<br />
<b>P.S.</b> Cristian Secară a <a href="https://groups.google.com/d/msg/diacritice/nSMt0hMJzHY/7pDZF6vZyWsJ">observat</a> că tastatura Fujitsu de mai sus este conformă cu primul standard românesc de tastatură, și anume cu SR-13392:1998, și nu cu cel din 2004.<br />
<blockquote class="tr_bq">
<br />
Principala diferență față de cel din 2004 este că ; și : sunt accesibile doar cu AltGr pe pozițiile din US English (iar în cel din 2004 sunt și cu Shift pe , și . în detrimentul < și >), iar ghilimelele românești sunt pe nivelul 3 și 4 (iar în cel din 2004 pe nivelul 1 și 2 în detrimentul ` și ~). În rest în 2004 sunt doar completări sau precizări, nu modificări.<br />
<br />
Cele de Siemens/Fujitsu au și ceva în plus față de standardul strict din 1998, anume accentele de tip tastă moartă (mai puțin pe 0). Cea de la Fujitsu văd că are și o problemă, anume Alt din dreapta scrie doar Alt (în loc de AltGr ca la orice tastatură europeană).</blockquote>
Destul de jenant ca după opt ani de la publicarea standardului, nu există o firmă care să aibă în ofertă tastaturi conforme cu standardul SR-13392:2004 (ambele aranjamente), mai ales că tastaturile conforme aranjamentului secundar (<a href="http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdropr.html" target="_blank"><b>Ro</b>manian <b>Pro</b>grammers</a>) pot înlocui cu succes toate tastaturile <a href="http://www.microsoft.com/resources/msdn/goglobal/keyboards/kbdus.html" target="_blank">English-US</a> existente pe piața românească.<br />
<br />
Ca exercițiu deschideți linkurile de mai sus în două file/taburi și alternați între ele, nu există nicio diferență în afara faptului că AltGr este Alt în aranjamentul English-US.<br />
<br />
<b>Actualizare Octombrie 2013 </b><br />
<br />
Pentru cei care își doresc o tastatură <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/rostd/rostd-inkscape.svg?rev=82">Română Standard</a> sau <a href="https://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/wasd/ropro/ropro-inkscape.svg?rev=82">Română Programatori</a> și sunt dispuși să plătească un pic mai mult (~170€) le recomand să citească articolul <a href="http://cristianadam.blogspot.de/2013/10/ro-tastatura-ro-pro.html">Tastatura RO-PRO</a>.<b> </b>Pe scurt este vorba de o tastatură mecanică <a href="http://www.wasdkeyboards.com/">WASD</a> la comandă. Tastatura este superbă, o recomand cu căldură.<b><br /></b>Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com3tag:blogger.com,1999:blog-19599775.post-61622970902714863692012-03-23T09:08:00.004+01:002012-11-21T12:16:17.731+01:00(ro) Kmkz sunt în față!<a href="http://www.kmkz.ro/">Săptămânalul Kamikaze</a> și-a schimbat înfățișarea în mediul electronic. Am făcut câteva teste pe tableta HP TouchPad rulând Android 2.3 (Cyanogen Mod).<br />
<br />
Android este unul dintre sistemele de operare, foarte utilizate pe dispozitivele mobile, care nu poate afișa <a href="http://code.google.com/p/android/issues/detail?id=9808">ț-ul cu virgulă</a>.<br />
<br />
Săptămânalul Kamikaze este unul dintre singurele săptămânale scrise în preponderență cu diacriticele corecte (ș și ț cu virgulă). Versiunea precedentă a ediției online se vedea astfel (în Firefox):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-caccFnaUO8g/T2psBHK0WMI/AAAAAAAAAiY/-5pI6jbXQ1w/s1600/ff_kamikaze_old.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-caccFnaUO8g/T2psBHK0WMI/AAAAAAAAAiY/-5pI6jbXQ1w/s640/ff_kamikaze_old.png" height="480" width="640" /></a></div>
<br />
Se pot observa cu ușurință pătrățelele de unde lipsește ț-ul. Varianta actuală arată astfel (tot în Firefox):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-52afWPIX5EI/T2ps6nfxpfI/AAAAAAAAAio/bZ06QufMnsU/s1600/ff_kamikaze_new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-52afWPIX5EI/T2ps6nfxpfI/AAAAAAAAAio/bZ06QufMnsU/s640/ff_kamikaze_new.png" height="480" width="640" /></a></div>
<br />
Noua variantă arată cu mult mai bine, aproape perfect dacă n-ar fi fost pătrățelele din colțul stânga jos.<br />
<br />
Dar de ce se văd restul de ț? Kamikaze este primul săptămânal din România care folosește tehnica @font-face de afișare a diacriticelor, tehnică pe care am descris-o în articolul <a href="http://cristianadam.blogspot.de/2010/04/browsere-moderne-ii.html">Browsere Moderne II</a> (29.04.2010), tehnică care implică descărcarea unui font de pe situl Kamikaze și folosirea lui de către browser pentru a randa pagina.<br />
<br />
Kamikaze folosește familia de fonturi <a href="http://en.wikipedia.org/wiki/Futura_%28typeface%29">Futura</a>. Mai jos avem un fragment din codul CSS:<br />
<blockquote>
<code>
@font-face {<br />
font-family: 'FuturaRoCEPlain';<br />
src: url('fonts/futura/futuraroce-webfont.eot');<br />
src: url('fonts/futura/futuraroce-webfont.eot?#iefix') format('embedded-opentype'),<br />
url('fonts/futura/futuraroce-webfont.woff') format('woff'),<br />
url('fonts/futura/futuraroce-webfont.ttf') format('truetype'),<br />
url('fonts/futura/futuraroce-webfont.svg#FuturaRoCEPlain') format('svg');<br />
<br />
font-weight: normal;<br />
font-style: normal;<br />
}
</code></blockquote>
Capturile de ecran de mai sus au fost făcute cu <b>Firefox 10.0.3</b>. Am testat și alte browsere, precum:<br />
<br />
<b>Browserul implicit cu care vine Android 2.3 (bazat pe motorul Webkit):</b><br />
<table><tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-DrpfZquwB2Y/T2pyjdzaE8I/AAAAAAAAAi4/7C4BZZb6TME/s1600/stock_browser_kamikaze_mobile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-DrpfZquwB2Y/T2pyjdzaE8I/AAAAAAAAAi4/7C4BZZb6TME/s320/stock_browser_kamikaze_mobile.png" height="320" width="240" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jbhi-gO04m8/T2pyh1j9DSI/AAAAAAAAAiw/1XmWkRyoO1E/s1600/stock_browser_kamikaze.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-jbhi-gO04m8/T2pyh1j9DSI/AAAAAAAAAiw/1XmWkRyoO1E/s320/stock_browser_kamikaze.png" height="320" width="240" /></a></div>
</td>
</tr>
</tbody></table>
<b>Dolphin 7.6.0 (bazat pe motorul Webkit)</b><br />
<br />
<table>
<tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-AqLqUlw3SqM/T2pzwE_YjZI/AAAAAAAAAjI/9fAzDGj2En0/s1600/dolphin_kamikaze_mobile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-AqLqUlw3SqM/T2pzwE_YjZI/AAAAAAAAAjI/9fAzDGj2En0/s320/dolphin_kamikaze_mobile.png" height="320" width="240" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-AamYZ7nrcNg/T2pzux9GqiI/AAAAAAAAAjA/dHh6lt_qUFw/s1600/dolphin_kamikaze.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-AamYZ7nrcNg/T2pzux9GqiI/AAAAAAAAAjA/dHh6lt_qUFw/s320/dolphin_kamikaze.png" height="320" width="240" /></a></div>
</td>
</tr>
</tbody></table>
<br />
<b>Opera 12.00</b><br />
<table><tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ekf8VH42MrI/T2rOUfAbv9I/AAAAAAAAAjo/yjwPw6AjLLo/s1600/opera_kamikaze_mobile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ekf8VH42MrI/T2rOUfAbv9I/AAAAAAAAAjo/yjwPw6AjLLo/s320/opera_kamikaze_mobile.png" height="320" width="240" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0Tnh2C5OrZ4/T2rOSlb29TI/AAAAAAAAAjg/L7EYeojkWgo/s1600/opera_kamikaze.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-0Tnh2C5OrZ4/T2rOSlb29TI/AAAAAAAAAjg/L7EYeojkWgo/s320/opera_kamikaze.png" height="320" width="240" /></a></div>
</td>
</tr>
</tbody></table>
<br />
La browserele de mai sus s-a afișat inițial versiunea mobilă a saitului, versiune care nu vine cu o protecție la diacritice, și ț-ul lipsă lovește din plin. În principiu versiunea mobilă a unui sait este o versiune mult mai „ușoară”, pentru a fi descărcată repede peste o conexiune 3G.<br />
<br />
Pentru versiunea mobilă s-ar fi putut folosi tehnica de detecție a diacriticelor problematice prezentată în articolul <a href="http://cristianadam.blogspot.de/2010/10/ro-diacriticele-si-internetul.html">Diacriticele și internetul</a> (30.10.2010). Scriptul diacritice.js (varianta „compilată”) are doar 1.5KB, față de <a href="http://www.kmkz.ro/wp-content/themes/kmkz_v3/fonts/futura/futuraroce-webfont.ttf">futuraroce-webfont.ttf</a> care are 24KB în mărime.<br />
<br />
Se pare că Opera este singurul browser care a respectat directiva @font-face peste tot, nu se văd pătrățele deloc în varianta „desktop”. <br />
<br />
Am menționat faptul că săptămânalul Kamikaze este scris în preponderență cu diacriticele corecte deoarece există și articole scrise cu diacriticele vechi. Vezi captura de ecran de mai jos:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-07LLC85VQ-g/T2rcvcJdshI/AAAAAAAAAjw/rmaMzJk2ioE/s1600/ff_kamikaze_diacriticele_vechi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-07LLC85VQ-g/T2rcvcJdshI/AAAAAAAAAjw/rmaMzJk2ioE/s640/ff_kamikaze_diacriticele_vechi.png" height="384" width="640" /></a></div>
<br />
Diacriticele vechi nu au fost incluse în fontul FuturaROCE și ele sunt „emulate” folosind un alt font, iar rezultatul este urâțel pe mașina mea cu Windows 7.<br />
<br />
Diacriticele vechi sunt introduse de obicei cu aranjamentul de tastatură „Legacy” din Windows (prezent de la <a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/keyboard/win_3_1_romanian.gif">Windows 3.11</a> încoace) Pentru cei familiarizați cu acest aranjament am creat un aranjament identic, dar care are diacriticele vechi schimbate cu cele noi.<br />
<br />
Pachetul de instalare universal pentru Windows XP, Vista, 7, 32 sau 64 de biți, poate fi descărcat de aici: <a href="http://www.assembla.com/code/cristianadam/subversion/nodes/keyboard/lgcyfix/legacy_fixed.exe?_format=raw">legacy_fixed</a> (202 KB). Pachetul de instalare este semnat digital, pentru mai multă siguranță :)<br />
Am creat acest aranjament de tastatură folosind <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=22339">Microsoft Keyboard Layout Creator 1.4</a>, iar dezinstalarea se face din „Control Panel -> Add Remove Programs” și acolo căutați după „Romanian (Legacy) - Fixed”.<br />
<br />
Kamikaze sunt în fața competiției și sper să dea un exemplu presei online românești! Textele se scriu cu diacriticele corecte în Web 2.0!<br />
<br />
P.S.<br />
<br />
Am făcut un filmuleț în care prezint instalarea „progrămelului” legacy_fixed.exe pe un Windows XP fără fonturile actualizate. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/K2pNk0cak3E?feature=player_embedded' frameborder='0'></iframe></div>
<br />Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com2tag:blogger.com,1999:blog-19599775.post-53221504345020118102012-03-05T22:33:00.001+01:002012-03-22T23:59:26.794+01:00Windows 8 Consumer Preview and the Romanian LanguageIn this blog entry I will present a few issues gathered in a short test drive of Windows 8 Consumer Preview. If you are not interested in these Romanian issues, please stop reading here :)<br />
<br />
<b>The fonts</b><br />
<br />
In the blog entry named <a href="http://cristianadam.blogspot.com/2011/08/windows-7-and-romanian-language.html">Windows 7 and the Romanian Language</a> I've did a bit of nit picking regarding the font families found on Windows 7.<br />
<br />
As it turns out, Microsoft didn't fix the font family problems in Windows 8 Consumer Preview. <b><span style="color: red;">Bad</span></b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-jbKPOgU2POI/T1U3CIbxxWI/AAAAAAAAAfs/-Yxi0rporr4/s1600/arial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-jbKPOgU2POI/T1U3CIbxxWI/AAAAAAAAAfs/-Yxi0rporr4/s320/arial.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-YGNKJ210QfM/T1U3DS4SrdI/AAAAAAAAAf0/hzu9v2VjeXU/s1600/tahoma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://2.bp.blogspot.com/-YGNKJ210QfM/T1U3DS4SrdI/AAAAAAAAAf0/hzu9v2VjeXU/s320/tahoma.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-5UcSnRiVQcA/T1U3EdzcUGI/AAAAAAAAAf8/RnXXlo3k0YA/s1600/times_new_roman.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://4.bp.blogspot.com/-5UcSnRiVQcA/T1U3EdzcUGI/AAAAAAAAAf8/RnXXlo3k0YA/s320/times_new_roman.png" width="320" /></a></div>
<br />
<b>The language shortened name</b><br />
<br />
Windows 7 had the Romanian language shortened to "RO", which was perfectly fine. Windows 8 has the Romanian language shortened to "RUM". This came a bit of a shock even though I knew the German translation, namely "Rumänisch".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kh7L-kVx9tE/T1U4BMe0_SI/AAAAAAAAAgE/DFkjs4zuAy4/s1600/desktop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-kh7L-kVx9tE/T1U4BMe0_SI/AAAAAAAAAgE/DFkjs4zuAy4/s320/desktop.png" width="320" /></a></div>
<br />
"RO" short name was standardized by <a href="http://en.wikipedia.org/wiki/ISO_639-1">ISO 639-1</a>. "RUM" short name was standardized by ISO 639-2, standard which was based on the <a href="http://www.loc.gov/marc/languages/">MARC Code List for Language</a> of the Library of Congress. There is also a <a href="http://en.wikipedia.org/wiki/ISO_639-3">ISO 639-3</a> standard which has <b>Ro</b>ma<b>n</b>ia<b>n</b> shortened to "RON", but that's not good either, since the Romanian currency is also shortened to "RON".<br />
<br />
If you ask any Romanian how should (s)he shorten the name of the <a href="http://en.wikipedia.org/wiki/Romanian_language"><b>Rom</b>anian language</a> (limba <b>Rom</b>ână), (s)he will say "ROM". As it turns out, "ROM" is also present in the ISO 639-2 standard, it marks the shortened form of <a href="http://en.wikipedia.org/wiki/Romani_language">Romany</a> language. <br />
<br />
This is not Microsoft's fault, but I think "RON" is better than "RUM". <b style="color: orange;">Baddish.</b><br />
<br />
<b>Retro translations</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-frkPFb6FQ2Q/T1U5bFz7FcI/AAAAAAAAAgM/pQR-ozzWLy0/s1600/bing.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://2.bp.blogspot.com/-frkPFb6FQ2Q/T1U5bFz7FcI/AAAAAAAAAgM/pQR-ozzWLy0/s320/bing.png" width="320" /></a></div>
<br />
If you ask anybody from Microsoft which characters (şţ cedilla or șț comma below) should be used in Romanian translations, they will point you to <a href="http://www.microsoft.com/romania/diacritice.aspx">this web page</a> and they will correctly say that the comma below characters are to be used. I've seen such a discussion between Nokia and Microsoft.<br />
<br />
But then why is the bing page above translated with the old cedilla characters? I can think of two possibilities:<br />
<ol>
<li>They've outsourced the translation to a firm which uses the Windows Legacy Romanian keyboard layout (like since Windows 3.11)</li>
<li>The usage of the old cedilla characters was intentional because of problems on some operating systems which have problems displaying the new comma below characters (Android prior to version 3, Windows XP with IE6, WebOS etc)</li>
</ol>
I wish Microsoft would remove the Legacy keyboard layout in Windows 8. How long will it be supported? At least please change the şţ cedilla characters with the șț comma below characters in the Legacy keyboard layout <br />
<br />
The latter problem can be fixed by using a small piece of Javascript code to detect if the width of "stST" string is the same as the width of the "șțȘȚ" string. If they are the same width then the browser can display the new comma below characters. If not, then it means that the browser is using a different font to substitute the characters, or it is using empty square characters, in which casejust replace the correct comma below characters with the more portable cedilla characters.<br />
<br />
I've presented this Javascript detection technique in this blog entry (Romanian): <a href="http://cristianadam.blogspot.com/2010/10/ro-diacriticele-si-internetul.html">Diacriticele și Internetul</a>. The MIT licensed Javascript code is located <a href="http://www.assembla.com/code/cristianadam/subversion/nodes/webpages/diacritice/diacritice_src.js">here</a>.<br />
<br />
Retro translations? <b style="color: red;">Bad</b><br />
<br />
<b>Maps</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kcc4eX4GjCo/T1U5rVekoBI/AAAAAAAAAgU/jMsX13U2I1Q/s1600/maps.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="http://3.bp.blogspot.com/-kcc4eX4GjCo/T1U5rVekoBI/AAAAAAAAAgU/jMsX13U2I1Q/s320/maps.png" width="320" /></a></div>
<br />
Besides the fact that the old cedilla ţ is being used in "Constanţa", there is nothing wrong with the page. This is good, it used to be <a href="https://plus.google.com/107732192814812927690/posts/b1f2Ljvz8Hw">wrongly rendered</a> a month ago.<b> </b>Fixed rendering? <b><span style="color: lime;">Good</span></b>.<br />
<br />
Thank you Microsoft, please correct the map data so that you are using the correct comma below characters. Old characters? <b style="color: red;">Bad</b><br />
<b><br /></b><br />
We'll see how Windows 8 RTM<b> </b>will look like in a couple of months.<b><br /></b>Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-14891090840297596602011-10-31T16:28:00.000+01:002011-11-01T13:03:17.702+01:00(ro) Algoritmi Fundamentali – O perspectivă C++Ne aducem aminte de algoritmi de obicei în preajma vreunui interviu, și atunci vrem ceva rapid și concis.<br />
<br />
În limba română sunt puține cărți care abordează această temă. Iar cele accesibile gratuit sunt și mai puține.<br />
<br />
O carte accesibilă gratuit este: Algoritmi Fundamentali – O perspectivă C++ publicată de Răzvan Andonie și Ilie Gârbacea la editura Albastră în 1995.<br />
<br />
Din păcate varianta accesibilă gratuit suferea de un mic defect – diacriticele lipseau cu desăvârșire.<br />
Eu țineam minte că atunci când am răsfoit cartea nu am avut nicio problemă în a o citi.<br />
<br />
După un mic dialog cu d-l Răzvan Andonie am aflat că varianta publicată într-adevăr avea diacritice, iar cea online nu. M-am oferit în a ajuta la restaurarea diacriticelor:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-JizJQnh3lKs/Tq69HPRvS5I/AAAAAAAAAd4/8nHeCGkT_xY/s1600/algoritmi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-JizJQnh3lKs/Tq69HPRvS5I/AAAAAAAAAd4/8nHeCGkT_xY/s1600/algoritmi.png" /></a></div>
Cartea, erata și codul sursă al programelor C++ sunt accesibile de pe <a href="http://www.cwu.edu/%7Eandonie/">pagina</a> d-lui Andonie. Versiunea fără diacritice mai poate fi găsită pe <a href="http://vega.unitbv.ro/%7Eandonie/">vechea pagină</a> a d-lui Andonie.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0tag:blogger.com,1999:blog-19599775.post-25778767713860475972011-08-21T20:50:00.002+02:002014-10-30T22:40:24.051+01:00Windows 7 and the Romanian languageStarting with Windows Vista, Romanian language became properly supported on Windows: two new keyboard layouts were added, and font families were updated to include <a href="http://en.wikipedia.org/wiki/S-comma">S comma below</a> and <a href="http://en.wikipedia.org/wiki/T-comma">T comma below</a> characters.<br />
<br />
Unfortunately some older fonts have some problems with S-comma below and T-comma below characters, comma is not below the S and T letter, is part of the letter. This happens also on Windows 7.<br />
<br />
The two characters are part of Unicode's <a href="http://www.unicode.org/charts/PDF/U0180.pdf">"Latin Extended-B"</a>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-dbvcn1MfUec/TlAtwM0kKUI/AAAAAAAAAb0/lxArgW3ornI/s1600/unicode_latin_extended_b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-dbvcn1MfUec/TlAtwM0kKUI/AAAAAAAAAb0/lxArgW3ornI/s1600/unicode_latin_extended_b.png" /></a></div>
<br />
I have done a simple test, to see how many fonts (from the Latin <a href="http://www.microsoft.com/typography/fonts/product.aspx?pid=161">Windows fonts</a>) have the S and T comma below characters with actual comma below symbol.<br />
<br />
The simple test consists in a webpage rendered Internet Explorer 8 and 9 on Windows 7 with normal font size (96dpi) and with large font size (120dpi).<br />
<br />
The test includes besides the Romanian characters (ĂÂÎȘȚăâîșț) also the "deprecated" S and T cedilla characters (ŞŢşţ) and S and T dot below characters (ṢṬṣṭ). <br />
<br />
Test pages and screenshots for Internet Explorer 8, 9 and Firefox 5 can be found <a href="http://www.assembla.com/code/cristianadam/subversion/nodes/fonts/Windows7-Fonts">here</a>. The results for 96dpi are presented below:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-_J2mIOsaAos/TlE0eyqBV-I/AAAAAAAAAb8/xl1gYOO2nUA/s1600/96dpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-_J2mIOsaAos/TlE0eyqBV-I/AAAAAAAAAb8/xl1gYOO2nUA/s1600/96dpi.png" /></a></div>
"Franklin Gothic Medium" is the only font which does not have S and T comma below characters.<br />
"Tahoma", "Segoe UI" and "Microsoft Sans Serif" have S and T dot below characters which have the dot separated for the 9pt and 8pt font sizes, which is not true for S and T comma below characters.<br />
<br />
The same test pages on Windows 7 with large fonts (120dpi) displayed correctly the comma for all fonts (except Franklin Gothic Medium).<br />
<br />
Internet Explorer 9 comes with a <a href="http://msdn.microsoft.com/en-us/library/hh237264%28v=vs.85%29.aspx">new font renderer</a> (using DirectWrite and Direct2D APIs) which reveals another problem with the S and T comma below characters. The comma below from S is different from the one under T, as seen in the images below:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/--UXQA2oRMhY/TlE_GmKmkAI/AAAAAAAAAcA/CY5d29O_5Zs/s1600/arial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/--UXQA2oRMhY/TlE_GmKmkAI/AAAAAAAAAcA/CY5d29O_5Zs/s1600/arial.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-XfUX_gq8aEY/TlFBPmR7PwI/AAAAAAAAAcE/67Z6SYId5-U/s1600/times+new+roman.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-XfUX_gq8aEY/TlFBPmR7PwI/AAAAAAAAAcE/67Z6SYId5-U/s1600/times+new+roman.png" /></a></div>
Tahoma has a problem with A-Breve (ă), in the bold form, breve is slightly shifted to the right:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-C36fLvroFG0/TlFHgzWiM-I/AAAAAAAAAcI/V0miaWF6a2Y/s1600/tahoma.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-C36fLvroFG0/TlFHgzWiM-I/AAAAAAAAAcI/V0miaWF6a2Y/s1600/tahoma.png" /></a></div>
<br />
S and T cedilla characters, even tough not correct from the Romanian language point of view, are still heavily used in many documents / web pages etc. It is important that the cedilla should be drawn the same for S and T. This is not true for all Windows 7 fonts.<br />
<br />
Firefox starting with version 4 includes locale dependent text rendering, which means that if you have the Romanian locale set the S and T cedilla characters will be automatically rendered with S and T comma below characters. Not all the Windows 7 fonts come with this locale information. Read more about this feature on <a href="http://en.wikipedia.org/wiki/Romanian_alphabet#OpenType_ROM.2Flocl_feature">Wikipedia</a>.<br />
<br />
The results for S and T cedilla are illustrated below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-1Zm0hVcRpJo/TlFQ2BnS9EI/AAAAAAAAAcQ/_VsH1aY_ofo/s1600/cedilla_locale_information.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-1Zm0hVcRpJo/TlFQ2BnS9EI/AAAAAAAAAcQ/_VsH1aY_ofo/s1600/cedilla_locale_information.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
As you have seen there is room for improvement when it comes to Romanian language support on Windows.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com5tag:blogger.com,1999:blog-19599775.post-72684168239023751732011-07-29T23:58:00.001+02:002011-08-01T13:16:26.541+02:00Starting development with Qt on WindowsThe general advice when it comes to start develop using Qt on Windows is to download the <a href="http://qt.nokia.com/downloads/">Qt SDK</a>. The offline version has 1.7 Gbytes and you can start developing for Desktop (using MinGW or Visual C++ 2008 Express or higher), for Symbian ^1 or ^3 devices, or for MeeGo devices.<br />
<br />
People usually complain about the size of the offline Qt SDK. In comparison Visual Studio 2008 Standard Edition (x86) - DVD (English) has 2,8 Gbytes.<br />
<br />
Even though the offline Qt SDK has 1.7 GBytes, it doesn't include everything. The precompiled Qt demos are not included in Qt SDK. They are available though through the individual <a href="http://qt.nokia.com/downloads/downloads#qt-lib">Qt Library installers</a>, or more explicitly <a class="internal-link" href="http://qt.nokia.com/downloads/windows-cpp-vs2008" title="Qt for Open Source C++ development on Windows (VS2008)">Qt libraries 4.7.3 for Windows (VS 2008, 228 MB)</a>.<br />
<br />
After installation one can use Qt Creator to develop applications. I won't go into much detail here, one can browse through the official documentation - <a href="http://doc.qt.nokia.com/qtcreator-2.2/index.html">Qt Creator Manual 2.2.1</a><br />
<br />
I'm going to describe how you can compile from <em>command line</em> programs for Desktop - MinGW, Visual C++ 2008, and for Symbian^3.<br />
<br />
First we need to get a small "Hello World" example. Google pointed out at <a href="http://doc.qt.nokia.com/4.3/tutorial-t1.html">Qt 4.3: Qt Tutorial 1</a>.<br />
We need to start up a text editor and paste:<br />
<pre style="background: #ffffff; color: black;"><span style="color: #2f2f2f;">#</span><span style="color: #2f2f2f;">include </span><span style="color: #2a2a2a;"><</span><span style="color: #333333;">QApplication</span><span style="color: #2a2a2a;">></span>
<span style="color: #2f2f2f;">#</span><span style="color: #2f2f2f;">include </span><span style="color: #2a2a2a;"><</span><span style="color: #333333;">QPushButton</span><span style="color: #2a2a2a;">></span>
<span style="color: #575757; font-weight: bold;">int</span> <span style="color: #575757; font-weight: bold;">main</span><span style="color: #555555;">(</span><span style="color: #575757; font-weight: bold;">int</span> argc<span style="color: #555555;">,</span> <span style="color: #575757; font-weight: bold;">char</span> <span style="color: #555555;">*</span>argv<span style="color: #555555;">[</span><span style="color: #555555;">]</span><span style="color: #555555;">)</span>
<span style="color: #555555;">{</span>
QApplication app<span style="color: #555555;">(</span>argc<span style="color: #555555;">,</span> argv<span style="color: #555555;">)</span><span style="color: #555555;">;</span>
QPushButton hello<span style="color: #555555;">(</span><span style="color: #2a2a2a;">"</span><span style="color: #4c4c4c;">Hello world!</span><span style="color: #2a2a2a;">"</span><span style="color: #555555;">)</span><span style="color: #555555;">;</span>
hello<span style="color: #555555;">.</span>resize<span style="color: #555555;">(</span><span style="color: #2e2e2e;">100</span><span style="color: #555555;">,</span> <span style="color: #2e2e2e;">30</span><span style="color: #555555;">)</span><span style="color: #555555;">;</span>
hello<span style="color: #555555;">.</span>show<span style="color: #555555;">(</span><span style="color: #555555;">)</span><span style="color: #555555;">;</span>
<span style="color: #575757; font-weight: bold;">return</span> app<span style="color: #555555;">.</span>exec<span style="color: #555555;">(</span><span style="color: #555555;">)</span><span style="color: #555555;">;</span>
<span style="color: #555555;">}</span>
</pre><br />
From Start Menu -> All Programs -> Qt SDK -> Desktop you can start the command prompt for "Qt 4.7.3 for Desktop (MinGW)". Unfortunately it lands into <i>c:\windows\system32</i><br />
<br />
Since I already use Total Commander for my file browsing I've decided to copy the properties from the Qt Command Prompts into Total Commander's <a href="http://www.ghisler.ch/wiki/index.php/Internal_command#Startmenu">Start Menu</a>. <br />
<br />
If we do not specify a "Start path" for an entry in Total Commander's Start Menu, Total Commander will use the current directory as start path, which together with a hot key will free me from useless mouse clicking and of some typing.<br />
<br />
"Qt 4.7.3 for Desktop (MinGW)" is a shortcut for "C:\Windows\System32\cmd.exe /A /Q /K C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qtenv2.bat". Copying the command line into Total Commander's Start Menu looses one functionality - the title of the command window becomes "c:\windows\system32\cmd.exe" compared with the Qt SDK's "Qt 4.7.3 for Desktop (MinGW)". This can be easily fixed by appending "title Qt 4.7.3 for Desktop (MinGW)" into "C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qtenv2.bat".<br />
<br />
Now that we have everything in place we can type into "Qt 4.7.3 for Desktop (MinGW)" command window the following commands (in the directory where we saved the "Hello World" source code):<br />
<pre style="background: #ffffff; color: black;"><code>qmake <span style="color: #555555;">-</span>project
qmake
mingw32<span style="color: #555555;">-</span>make
</code></pre><br />
The result is presented bellow:<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-vgXRmmVJHlU/TjMT-Kq78oI/AAAAAAAAAa0/etTvn4Kjems/s1600/hello_world.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-vgXRmmVJHlU/TjMT-Kq78oI/AAAAAAAAAa0/etTvn4Kjems/s1600/hello_world.png" /></a></div><br />
I've done the same for "Qt 4.7.3 for Desktop (MSVC 2008)". The commands to build the "Hello World" application are almost the same, but instead of mingw32-make, nmake is to be used with MSVC 2008.<br />
<br />
But after running nmake the following message was displayed: <br />
<blockquote>'nmake' is not recognized as an internal or external command, operable program or batch file.</blockquote><br />
This is due to the fact that "C:\QtSDK\Desktop\Qt\4.7.3\msvc2008\bin\qtenv2.bat" does not setup the MSVC 2008 compiler. In order to fix this append the lines to the qtenv2.bat file:<br />
<blockquote>call "%programfiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" <br />
title Qt 4.7.3 for Desktop (MSVC 2008)</blockquote><br />
For Symbian^3 instead of making a shortcut to cmd.exe and pass the batch file as argument, there is a shortcut to the batch file: "C:\QtSDK\Symbian\SDKs\Symbian3Qt473\bin\qtenvS3.bat", which in turn makes a call to cmd.exe. Exactly the opposite. Edit qtenvS3.bat and replace the last line "cmd /A /Q /K" with the lines:<br />
<blockquote>popd<br />
title Qt 4.7.3 for Symbian^3 Command Prompt</blockquote><br />
Compiling the "Hello World" sample for Symbian^3 goes like this (helloqt.cpp needs to be on the same drive where Qt SDK was installed, e.g. c:\):<br />
<pre style="background: #ffffff; color: black;">qmake <span style="color: #555555;">-</span>project
qmake
make release<span style="color: #555555;">-</span>gcce
make sis
</pre><br />
After installing helloqt.sis on device, the result looks like this (admittedly not a very good looking screen shot):<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-SAd6p-MwPek/TjMiVthKtFI/AAAAAAAAAa4/kbMiobOeU7s/s1600/helloqt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-SAd6p-MwPek/TjMiVthKtFI/AAAAAAAAAa4/kbMiobOeU7s/s320/helloqt.png" width="180" /></a></div><br />
Compiling Qt applications from command prompt is important in cases in which we have to deal with <em>configure</em> scripts, or when we want to do things "old school" :)<br />
<br />
I've opened up a bug report <a href="https://bugreports.qt.nokia.com/browse/QTSDK-802">QTSDK-802</a> with the issues presented in this blog entry.Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com1tag:blogger.com,1999:blog-19599775.post-60495379063078092011-07-03T14:11:00.010+02:002011-07-03T16:00:25.658+02:00(ro) Firefox și diacriticele vechi și noiRecent s-a lansat <strike><a href="http://www.ca%c8%9bavencii.ro/">www.cațavencii.ro</a></strike> <a href="http://www.catavencii.ro/">www.catavencii.ro</a>, și pentru un sit nou nouț mi s-a părut înapoiată alegerea de a folosi diacriticele vechi cu sedilă, mai ales când există <a href="http://cristianadam.blogspot.com/2010/10/ro-diacriticele-si-internetul.html">soluții tehnice</a> pentru rezolvarea problemei pătrățelelor în navigatoarele mai vechi. Dar sedile din titlurile articolelor arătau foarte corect în Firefox.<br />
<br />
Am făcut două capturi de ecran pentru Firefox 5 și Google Chrome 12 și le-am pus într-un gif animat:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-fCHF-TDcv7Y/ThBWxpdXOSI/AAAAAAAAAZs/F4ZoSkMplg8/s1600/catavencii.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://4.bp.blogspot.com/-fCHF-TDcv7Y/ThBWxpdXOSI/AAAAAAAAAZs/F4ZoSkMplg8/s320/catavencii.gif" width="320" /></a></div><br />
Google Chrome afișa pagina cu sedile, precum Opera 11.50 și Internet Explorer 9.0. Inițial am crezut că este vorba de un bug și l-am raportat <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=668996">#668996</a>, dar s-a dovedit că nu este un bug ci un/o „feature”!<br />
<br />
Firefox începând cu versiunea 4 randează textul în funcție de limba aleasă pentru setările locale din sistem. Din păcate nu toate fonturile din Windows 7 vin cu această facilitate, asta explică de ce fontul „Times New Roman” din animația de mai sus și-a păstrat diacriticele cu sedilă.<br />
<br />
Alte situri precum <a href="http://www.capisci.ro/">www.capisci.ro</a> sunt desedilizate complet. Vezi articolul despre diacritice:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-BAFGJTDu790/ThBZYTzykcI/AAAAAAAAAZw/Qr_lEpogCZQ/s1600/capisci.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://2.bp.blogspot.com/-BAFGJTDu790/ThBZYTzykcI/AAAAAAAAAZw/Qr_lEpogCZQ/s320/capisci.gif" width="320" /></a></div><br />
Cei de la capisci au această notă <i>„Textul articolului este scris intenţionat cu semne diacritice greşite la literele ş şi ţ pentru a permite citirea lui de către aceia care probabil sînt cei mai interesaţi de subiect, adică aceia care văd pătrăţele în locul literelor corespunzătoare cu diacritice corecte.” </i>:)<i></i><br />
<br />
Pentru<i> </i>a preveni înlocuirea automată codul html trebuie să conțină indicații despre limbă precum <i>lang="en".</i><br />
<br />
În viitorul apropriat sistemele de operare vor avea toate fonturile actualizate și cel puțin Firefox va afișa internetul românesc corect!<br />
<br />
Merită totuși menționat faptul că acest lucru se poate face <i>acum</i> cu ajutorul extensiei <a href="https://addons.mozilla.org/en-US/firefox/addon/foxreplace/">FoxReplace</a>! Eu am ales să fac conversia manual, apăsând tasta F2. Puteți importa direct <a href="http://www.assembla.com/code/cristianadam/subversion/node/blob/FoxReplace/FoxReplace.xml">fișierul meu de configurare.</a>Cristianhttp://www.blogger.com/profile/16735332457747999220noreply@blogger.com0