How to Use FontTools Module in Python


Python comes with the great modules which you can use them to improve your application functionalities. Recently I felt in love with Python and trying to implement some of my daily usages with it. I was always interested in Unicode and Fonts so that I had a glance at Python abilities in these fields and I have to say that Python has a lot to say when it comes to these areas. It is really fantastic and powerful and you have access to whatever you want just a a peace of a cake. In this Article I show you how to use python abilities to save a font as an XML document. It may be wierd for you but sometimes it is necessary to check font tables and the rest of its information.

To start working with fonts it’s worth to add FontTools library to Python; it will extend your abilities to work with fonts. You can download it from here.

Each Python module has its own way for installation. Some of them only needs a simple copy to the appropriate folders and some of them should be installed. FontTools uses the second approach so that you have to follow the following instruction to install it in your Python.

  • Open Windows Command Prompt
  • Go to the folder you download FontTools
  • Write build and press enter
  • Write Setup.pyinstall and press enter
Installing FontTools with Command Prompt in Python
Installing FontTools with Command Prompt in Python
Important Note: I first Installed My FontTools and Then take the above photo from my comand prompt so that the command reply may be different for the first time and the second. You just use the mentioned commands instead of considering provided replies by Python

Some lines will appear in your command prompt and then installation will complete within a minute. Now, to use this module in your application you have to load ( or  import or use ) this module in your application, so write the following command in your Python application just like other commands

[sourcecode language=”python”]
from fontTools.ttLib import ttfont

Note that commands are case sensitive so write it in the exact mentioned way.

Till now you are able to use FontTools abilities in your application so that to test it we create a font object and then get a simple export from it.

To create a font object in Python write the below command in your application; just note that you have to use for slash instead (/) of back slash (\) for addressing

[sourcecode language=”python”]
font = TTFont("d:/fontname.ttf")

Till now you created a new object of your font in the object named font. It’s time to use it in our application so that I save the font as an XML document just like

[sourcecode language=”python”]

Save a Font As XML with Python FontTools Module
Save a Font As XML with Python FontTools Module

You can find the rest of the FontTools commands in the documentation. Share your experiences with me if you know another good library to work with fonts.

Unicode 6.0 Released

Unicode Logo
Unicode Logo

Two days ago Unicode 6.0.0 was released and it has important changes. There are also some changes that Iranian developers should be aware of, or is better to be aware. I try to summarize the changes base on what Roozbeh Pournader said in Persian Computing Community, and I also add some other information that mentioned in Unicode Official Website. I will post two article for this, the first one (this article) includes Unicode 6.0 information and the second one is some description about whatever is important for Iranian developers.

Note: Most of the text that you are going to read is copied from Unicode Official Website and Roozbeh Pournader text, so that the main writers are them. I just summarized and categorized text for complete information and revise it in some parts.

What is inside of Unicode 6.0

Version 6.0 of the Unicode Standard consists of the core specification, the delta and archival code charts for this version, the Unicode Standard Annexes, and the Unicode Character Database (UCD).

The core specification gives the general principles, requirements for conformance, and guidelines for implementers.

The code charts show representative glyphs for all the Unicode characters.

The Unicode Standard Annexes supply detailed normative information about particular aspects of the standard.

The Unicode Character Database supplies normative and informative data for implementers to allow them to implement the Unicode Standard.

“The links for most Version 6.0.0 chapters, and the front and back matter of the core specification are not yet active, because that text is still undergoing its last stage of editorial reviewUnicode Official Website said. “These links will be activated over the next several months, once the editorial review is complete”.

For Unicode 6.0.0 in particular two additional sets of code chart pages are provided:

  •    A set of delta code charts showing only the new blocks for Unicode 6.0.0 and any existing blocks for which new characters were added in Unicode 6.0.0. All new characters are visually highlighted in those charts.
  •    A set of archival code charts that represent the entire set of characters, names and representative glyphs at the time of publication of Unicode 6.0.0.

The delta and archival code charts are a stable part of this release of the Unicode Standard. They will never be updated.

What is new in Unicode 6.0?

1  –  2088 new characters have been added, including

  •    Over 1,000 additional symbols—chief among them the additional Emoji symbols, which are especially important for mobile phones.
  • The new official Indian currency symbol: the Indian Rupee Sign.
  • 222 additional CJK Unified Ideographs in common use in China, Taiwan, and Japan.
  • 603 additional characters for African language support, including extensions to the Tifinagh, Ethiopic, and Bamum scripts.
  • Three additional scripts: Mandaic, Batak, and Brahmi.

2  – Some new properties and data files have been added including

  •    A data file, EmojiSources.txt, which maps the Emoji symbols to their original Japanese telco source sets
  •    Two provisional properties for support of Indic scripts: IndicMatraCategory and IndicSyllabicCategory
  •    Provisional script extension data for use in segmentation, regular expressions, and spoof detection

3  – Some character properties for existing characters have been corrected including

  •    Property value updates to 36 non-CJK characters
  •    Numerous improvements to provisional properties for CJK Unified Ideographs
  •    Format updates for many normative IRG source tags, to better synchronize with ISO/IEC 10646 (see UAX #38, Unicode Han Database, for details)

4  – Amends the text of the Standard

  •    Many changes to the core specification, listed in D. Textual Changes and Character Additions
  •    Small clarifications of the conformance clauses in UAX #9, The Unicode Bidirectional Algorithm, but no significant changes to conformance requirements
  •    Major editorial revisions of UAX #44, Unicode Character Database, and UAX #15, Unicode Normalization Forms, but no significant changes to conformance requirements

5  – Provides format improvements, including

  •    Charts for CJK Compatibility Ideographs are now laid out in a multicolumn format showing sources, comparable to the structure of the charts for the CJK Unified Ideographs

UTS #10, Unicode Collation Algorithm, and UTS #46, Unicode IDNA Compatibility Processing, maintained in synchrony with the Unicode Standard, and have updates for Version 6.0.

The repertoire for Unicode Version 6.0 includes all the characters of the Second Edition, plus one additional character U+20B9 INDIAN RUPEE SIGN, which is still in the process of addition to 10646.

Character Assignment Overview

230 characters have been added to the BMP, while 1,858 characters have been added in the supplementary planes. For the first time in the history of the Unicode Standard, the majority of the regular encoded characters (graphic and format) are not in the BMP.

Most character additions are in new blocks, but there are also character additions to a number of existing blocks.

The following table shows the allocation of code points in Unicode 6.0, by character type. It highlights the numbers for the BMP and the supplementary planes separately. For more information on the specific characters newly assigned in Unicode 6.0, see the file DerivedAge.txt in the Unicode Character Database. For more details regarding character counts, see Appendix D, Changes from Previous Versions.

Type BMP Supplementary Total
Graphic 54,495 54,852 109,242
Format 37 105 142
Control 65 0 65
Private Use 6,400 131,068 137,468
Surrogate 2,048 0 2,048
Noncharacter 34 32 66
Reserved 2,457 862,624 865,081

New Blocks

The newly-defined blocks in Version 6.0 are:

0840..085F Mandaic
1BC0..1BFF Batak
AB00..AB2F Ethiopic Extended-A
11000..1107F Brahmi
16800..16A3F Bamum Supplement
1B000..1B0FF Kana Supplement
1F0A0..1F0FF Playing Cards
1F300..1F5FF Miscellaneous Symbols And Pictographs
1F600..1F64F Emoticons
1F680..1F6FF Transport And Map Symbols
1F700..1F77F Alchemical Symbols
2B740..2B81F CJK Unified Ideographs Extension D

Text Changes and Additions

Numbers indicate the chapter or section in the Unicode 6.0 core specification where there are some significant changes or additions. This list is not exhaustive. Select changes for Chapter 3, Conformance, are listed separately under E. Conformance Changes. Many figures have been updated or added throughout.

  •    Preface: Rewrote extensively
  •    5.17: Updated shift/rotate in UTF8/UTF16 binary order algorithm
  •    6.2: Documented dandas
  •    7.1: Added new text on Latvian (and Sorbian) letters in Latin Extended-D
  •    8.2: Updates to Arabic, including Arabic pedagogical symbols (nuktas) and Kashmiri additions for Arabic
  •    9: Various updates to Indic, including additions to tables of vowel letters
  •    9.1: Updates to Devanagari, including Kashmiri additions for Devanagari
  •    9.5: Added text on Oriya fraction signs
  •    9.6: Improvements to Tamil
  •    9.9: Added text on new Malayalam characters, including Dot Reph
  •    10.2: Various updates to Tibetan
  •    11.13: Various updates to Balinese
  •    11.14: Various updates to Javanese
  •    12.1: Various updates to Han; added new section on CJK Extension D
  •    12.4: Added new subsection on Kana Supplement in Hiragana and Katakana
  •    12.6: Various updates to Hangul
  •    13.1: New text on Ethiopic additions in Ethiopic Extended-A
  •    13.4: Added new text on Tifinagh bi-consonants
  •    13.7: Added new text for Bamum Supplement
  •    15: New text on Emoji affecting the description of the following code ranges:
          o    2300-23FF Miscellaneous Technical
          o    2700-27BF Dingbats
          o    1F0A0-1F0FF Playing Cards
          o    1F100-1F1FF Enclosed Alphanumeric Supplement
          o    1F300-1F5FF Miscellaneous Symbols And Pictographs
          o    1F600-1F64F Emoticons
          o    1F680-1F6FF Transport And Map symbols
  •    15.1: New text on U+20B9 INDIAN RUPEE SIGN
  •    15.8: New subsection on Alchemical Symbols
  •    16.8: Updates regarding annotation characters and bidi
  •    17.2: Updated to note the new presentation format for compatibility ideographs
  •    Appendices and Back Matter: various updates
  •    Han Radical-Stroke Index now online only; introductory material moved to chapter 12

Unicode Character Database changes

  •    A general category change to two Kannada characters (U+0CF1, U+0CF2), which has the effect of making them newly eligible for inclusion in identifiers
  •    A general category change to one New Tai Lue numeric character (U+19CA), which would have the effect of disqualifying it from inclusion in identifiers unless grandfathering measures are in place for the defining identifier syntax
  •    Changes to ten characters affecting the determination of script runs
  •    The formal deprecation of one Arabic character
  •    Reversal of the default grapheme cluster boundary determination for Thai and Lao to the behavior specified in Unicode 5.0

Other significant changes include:

  •    Addition of the EmojiSources.txt data file, detailing source mapping information for the Emoji characters
  •    Addition of the provisional ScriptExtensions.txt data file, providing information about use of certain characters with multiple scripts
  •    Addition of new provisional properties related to the structure of syllables in Indic scripts
  •    Deprecation of several derived properties related to Unicode normalization
  •    Improvement of the LineBreakTest.txt and BidiTest.txt files

Unicode 6.0.0 Standard Annexes

UAX #9: The Bidirectional Algorithm
UAX #11: East Asian Width
UAX #14: Line Breaking Properties
UAX #15: Unicode Normalization Forms
UAX #24: Script Names
UAX #29: Text Boundaries
UAX #31: Identifier and Pattern Syntax
UAX #34: Unicode Named Character Sequences
UAX #38: Unicode Han Database (Unihan)
UAX #41: Common References for Unicode Standard Annexes
UAX #42: An XML Representation of the UCD
UAX #44: Unicode Character Database

Related Links

Unicode Official Website

Unicode 6.0.0 Information

Latest Code Chart

Archive Code Chart

Delta Code Charts Unicode 6.0 additions are highlighted

Unicode 5.2.0 Core Specifications

What is Reporting Services and How to create a server-side Report

SQL Server 2008

As you all know nowadays reporting is one of the important sections of each application, specially official and financial ones. So that there are lots of reporting services which provide some feature for developers to create custom reports. Most of you are aware of some reporting services in each programming language like Crystal Report, Jasper Report and etc. most of these reports create xml document from your custom reports and show it to users with a report viewer which compile the xml and show the result.

In order to creating powerful and robust reports, since 2005 SQL Server provides a Reporting Service which formerly named SSRS or SQL Server Reporting Services. So to use SSRS you have to buy a Developer or Enterprise edition. After installation you’ll have a ‘SQL Server Business Intelligence Development Studio’ which allows you create Server-side reports.

SSRS 2005 used schema 2005 and SSRS 2008 using schema 2008 for creating server-side reports. I wrote many posts about SSRS before so if you are a fan of this blog, you’re aware of these schemas and differences. Visual Studio has a built-in reporting system which allows you to create client-reports (RDLC) and it use schema 2005 to do its job.

When we use SSRS instead of VS Reports

Client reports which provided by VS are suitable for available data. For example you have a list of users or asset and you want to get a report from it.

Server reports which provided by SQL Server, use for reports which need calculation and in some cases take some minutes to generate, cause data have to generate based on some parameters.

SSRS (schema) 2005 has lots of issues with RTL and Unicode but SSRS 2008 resolve most of them and there are only a few problems that can be neglected.

Upgrading reports from schema 2005 to schema 2008 is a real nightmare that I wrote about it and its solution, but you have to know that it’s not an easy job.

How to create a server side report in SSRS 2008

  • Open Visual Studio
  • Create a new project and choose Business Intelligent Projects from the left pane and then select Report Server Project
  • Give a Name to your project
Creating a Reporting Services Report Project
Creating a Reporting Services Report Project

Your server-side project is ready, now you have toad a new server reports to it to do this

Add a new Item and select Report (note to format of the report, it is RDL)

Now you have an empty report and you can design it with Toolbox items and bind it to your database with Store procedure or via a simple query

Merry Christmas and Hapy New Year

as you knew ,I’m blogging in english and stop writing Farsi, it is because I’m trying to find a job from another country and it is better to show my experience in english. it doesn’t mean that I’ll never write a persian document any more, but there will a document on a month.


GNU Logo
GNU Logo

‪Title : ‪Merry Christmas and Hapy New Year

‪Publish Date : 29/12/2009

‪Version : 1.0

‪Author : Nasser Hajloo

‪Author Mail :

‪Copyright (c) 2009 Nasser Hajloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


any way we’re going to have a new year and finishing a good year. 2009 passed and I took too many experiences. it was bad and sometimes so good. but I want to start a real good year. in this year, I’ll

  •   finish JIRA translation.
  •   create at least 1 (or 2) Visual Studio (2010) add-ins
  •   read more about unicode
  •   work with a new dev team. (as I told, I’m looking for a remote job)
  •   desing a site for myself.
  •   write persian indeed document in english (e.g: introducing 9147 in english and vice versa)
  •   find a way to connect with Microsoft Windows localization center and suggest to put ISIRI 9147 keyboard layout as standard persian keyboard.
  •   work more and more with Microsoft Expression Suit.
  •   do more with WPF.
  •   Buy a new Desktop with core i7 cpu. (I’m one of Nehalem crazies. it’s really impressive.)
  •   changing my friendly reaction.
  •   collaborating with at least 1 (or 2) open source project
  •   publishing my resume on my peronal blog (site)
  •   do more connection with english bloggers.
  •   do more activity on and SSRS forum (or stackoverflow)
  •   try to start writing my first short hand book in english and persian (2 languages) it may be about unicode or something else.
  •   do more personal projects.

ok, I think it is enough for next year and wish you (specially persian bloggers) provide more persian or english documents and make it easier to find an answer.

at last wish you freedom and hope stand by me in next year. Merry Christmas and Hapy New Year

Open Source Unicode Converter

‪‪ as you may know I have some open source activity, and recently publish my first open source project in codeplex.


GNU Logo
GNU Logo

‪Title : Open Source Unicode Converter

‪Publish Date : 09/12/2009

‪Version : 1.0

‪Author : Nasser Hajloo

‪Author Mail :

‪Copyright (c) 2009 Nasser Hajloo.

‪Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

‪with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


‪in our company (where I’m working) we’re using Sql Server Reporting Services as reporting service system. we used SSRS 2005 and then upgrade to SSRS 2008 in this upgrading flow we face some problem and indeed to use unicode, where I get familier with unicode and its amazing features.

‪now 2 years passed and I feel that I should provide a powerfull tools for working with unicode, so I search for existing tool and I found

‪on codeplex, Khmr was so diffrent than I need, and fardis ( that leaded by one of my best friend – Afshar Mohebbi ) just cover persian range of unicode, and also afshar do not spent his time on this project any more (in my oponien), because of this I have create a Unicode converter for international reasons and international users.

Unicode Converter - Unicode Information Section
Unicode Converter - Unicode Information Section

‪Unicode Converter is a Free Open Source Software for converting to/from unicode and also getting information about a character.

‪Unicode Converter developed in C# 3.5 and provide 2 variant user interfaces, one for windows with WPF and one with for Web.

‪WPF interface going to finish but web interface do not start yet, I think about 2 interface because WPF in limited to windows and a reall FOSS software should not depend on a platform so I provide a web interface for all users.

Unicode Converter - Keyboard Layout Section
Unicode Converter - Keyboard Layout Section

‪by the way in this couple of years I face with a huge issue and it was data input in any language, specially in IRAN most of users (i mean even expert users) use from default windows keyboard layout that is not a standard keyboard layout and all persians familier with ‘Yeh’ (ي – ی) and ‘Kaf’ (ك – ک ) and 4 – 5 & 6 and other numbers issue. that Persian Standard Keyboard Layout (IRISI 9147) resolve these problems in best way, so I put a section for Standards Keyboard Layout for all countries in this application when you select your country, all indeeded information about the keyboard layout will display.

‪ofcourse these information are not complete yet and I need your knoweledge to complete this information for all country, all you need to do is just extending Standards.XML in EnterpriseAppUnit project with your new country infromation and I believe that with your help we can made a better software.

Unicode Converter - Convert To Unicode Section
Unicode Converter - Convert To Unicode Section

‪Unicode Converter hosted by Codeplex , and have 4 project inside,

‪EnterpriseAppUnit : is the logic section of the application and provide some xml that contains characters unicode information.

‪Framework : is the base and common project to collaborate with all Projects, it contains exceptions and some other Base classes.

‪Portal : Web Interface of software

‪UnicodeConverter : WPF Windows interface of software

‪so I need your help to extend this project and if you have a little information (just for a country) please help us improve this application.

‪there are many of jobs to do, and you can see all of them in project Issue tracker.

‪any suggestion and help is appreciate.

‪Unicode Converter :

‪Regards Nasser hajloo

استفاده از برنامه‌های Open Source

چند وقتی هست که بنابه دلایل مختلفی به مباحث پیرامون Open Source و کلا نرم افزار‌های کدباز علاقند شدم. به همین دلیل سعی کردم که در این مورد بیشتر مطالعه کنم و کمی بیشتر خودم رو درگیر مسایل مربوط به اینBusiness Plan ( همون open source) بکنم.


این مطلب زیر نظر مجوز GFDL منتشر می‌شود. و کلیه حقوق آن برای همگان آزاد است، بدین شرط که به کلیه شرایط موجود در مجوز GFDL ( که یک نسخه از متن انگلیسی مجوز GFDL در این محل و یک ترجمه غیر رسمی (فارسی) از متن مجوز GFDL که در مرداد ۱۳۸۳ توسط کاوه رنجبر تهیه شده است در این محل ) قرار دارد پایبند باشد.

GNU Logo
GNU Logo

عنوان مطلب : استفاده از برنامه‌های Open Source

بخش ثانی : ندارد

تاریخ انتشار : 29/02/1387 مطابق با 19/0۵/2009

شماره نسخه : نسخه یک

نویسنده : ناصر حاجلو

ای-میل نویسنده :

Copyright (c) 2009 Nasser Hajloo.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


این روال باعث شد، که به میزان استفاده خودم از نرم افزرهای تجاری، و شرکت هایی  که  در حال حاضر اونجا کار می‌کنم بیشتر فکر کنم. و اینکه واقعا هر کدوم از اون شرکت‌ها چقدر از امکانات برنامه‌هایی که تجاری ( و کرک شده ) هستند رو استفاده می‌کنند

یکی از شرکت‌ها که بخش اصلی توسعه نرم افزارش بر روی تکنولژی دات نت (C#) هست. از بیشتر برنامه‌های تجاری (‌کرک شده) مثل VisualStudio و SQL Server ( که هر دو مورد رو جدیدا اون هم با اکراه !!!! زیاد به نسخه ۲۰۰۸ ارتقا دادن  ) و یکسری برنامه اداری دیگر مثل Office و … استفاده می کنه.

شرکت دیگری بخش اصلی توسعه نرم افزاریش بر روی جاوا هست و ازNetbeans و SDK های کدباز و MySql استفاده می کنه ( برای کارهای اداری هم همون Office و … )

نکته جالبیکه در هر دو شرکت نظر خود من رو جلب کرده اینه که هیچ کدوم از این دو شرکت به دلیل کدباز بودن، اقدام به انتخاب نرم‌افزارهای توسعه نکردن و صرف اینکه یکطرف دات نتی بوده و طرف دیگر جاوایی، از برنامه‌های موجود استفاده می‌کنن . به این معنی که اگر جای دو شرت با هم عوض میشد، باز هم گزینه دیگری برای استفاده رو انتخاب نمی کردن !!

در خود شرکت ما تقریبا ۹۰ درصد یا شاید ۹۵ درصد از پروژه اصلی رو میشه با همون امکانات Visual Studio Express هم نوشت و توسعه داد  باقی هم مربوط به پروژه Test میشه که اون رو هم خود من به شخص هیچ وقت ( بغیر از یی دو مورد ) ندیدم ازش استفاده بشه. از اون طرف استفاده از SQL Server هم به همین صورت هست و همه کارها به غیر از بخش گزارش گیری که مربوط به Reporting Services میشه رو براحت میشه با SQL Server Express هم اداره کرد. مطمئنا کارهایاداری شرکت هم بجای Office با OpenOffice قابل حل خواهد بود. حالا اینکه دلیل استفاده از این نرم‌افزارهای گران قیمت بصورت کرک شده چیه واقعا برای خود من سواله ؟ و یا اینکه اصلا چرا مجوز استفاده از این برنامه‌ها توسط شرکت‌ها که خودشون اقدام به تولید نرم افزا می کنن خریداری نمیشه جای سال داه.

این دو شرکت رو صرفا برای نمونه آوردم و تمام شرکت‌های قبلی و مختلفی رو که از نزدیک با اونها درگیر بودم، همین وضعیت رو دارن. شاید اگر خیلی ها مجبور به خریداری نسخه های اصلی بشن دیگه این قدر با اکراه اقدام به تغییر نسخه نمی کنن و بی دلیل به سمت چیزی نمیرن. فکرمی کنم در اون صورت خیلی از مشکلات خود برنامه نویس‌ها هم حل بشه ( مثل اینکه وقتی فلان کاربر در استفاده از یک IDE خاص که شرکت براش پول خرج کرده، قدرت بیشتری داشته باشه، روی حقوق و سایر مزایای اون شخص تاثیر گذار باشه. )

خود من سعی کردم که جدیدا تا اونجا که مطمئن بشم به مشکلی بر نمی خورم از برنامه‌های کدباز استفاده کنم. به همین دلیل سریعا در حال مهاجرت از Office به Open Office هستم ( که مهمترین برنامه من توی کارهای شخصی هست ) همین طور در صورت امکان سایر موارد رو هم بزودی تغییر خواهم داد. گرچه خود من واقعا هیچ وقت از استفاده کرک وجدان درد نگرفتم. چون اگر مثل یک برنامه نویس آمریکیی حقوق می گرفتم مسلما اقدام به خرید VisualStudio و Sql server و سایر موارد مورد نیاز می کردم. قاعدتا وقتی کل درآمدم در طول چند سال آینده ، به اندازه خرید یک نسخه sql server هم نیست ( در صورتی که همتای آمریکایی هست ) در استفاده از نسخه کرک هیچ تردیدی به خودم راه نمیدم!!!  گرچه اخلاقیات حکم به عدم استفاده می‌دهد. اما چون خود من مسئولیت این وضع نرم افزاری را بخش بزرگی از آن را به برادران سیاستمدار داخلی و خارجی می دانم. تا رفع نشدن این مشکلات به استفاده از این برنامه‌ها ادامه خواهم داد.

البته داستان مهاجرت از برنامه‌ها واقعا درحال جریان است و خیلی ها را تغییر دادم. اما چون د چند سال آیده ( شاید هم بزودی ) به یک کشور دیگر مهاجرت کنم. بنابراین بخاطر داشتن دانش کافی در استفاده از این برنامه‌ها از برنامه‌های کدباز هم استفاده می کنم.

همچنین خود من سعی می‌کنم که در صورت داشتن زمان بیشتر ( که خوشبختانه در حال پیدا کردن این وقت هستم !!) روی پروژه های کدباز هم کار کنم. دو مورد ازاین موارد پروژه های زیر هستند.

پروژه فردیس که افشار محبی آن را ایجاد کرده و کار اصلی آن برگرداندن کد یونی‌کد کاراکتر وارد شده است.

و دیگری اضافه کردن تقویم فارسی به مجموعه کنترل‌های WPF

مشکل بهم ریختگی متون فارسی انگلیسی در کامپیوتر

Unicode Logo
Unicode Logo

امروز واقعا از اینکه بیش از چهار سال است طراحی وب می‌کنم از خودم خجالت کشیدم واز اینکه وقتم رو خیلی وقتها بیهوده از دست دادم تاسف خوردم. امروز هم مثل سایر روزها توی شرکت مشغول کار بودیم که افشار محبی  متوجه نکته بسیار مهمی شد.

خیلی وقتها شما در فرمهای کامپیوتری مشکل بزرگی دارید و آن این است که خیلی از برنامه‌ها فرم ورود اطلاعات راست به چپ را پیاده سازی نکرده‌اند و وقتی شما یک متن فارسی را با انگلیسی با هم در یک جمله بکار می برید جمله شما هر وقت که به کلمه انگلیسی می‌رسد، بجای اینکه کلمه انگلیسی را سمت چپ جمله قرار بدهد، آن را سمت راست نوشتار قرار می‌دهد به شکل زیر

این یک جلمه به زیان فارسی است که کلمات English در آن باعث Break در جمله می‌شود

نمونه بالا بخصوص در متن ای-میل‌ها به چشم می‌خورد. اگر بخواهیم مشکل بالا را رفع کنیم یک راه کوچه بازاری آن است که در هر بار مطالعه متن حالت TextBox حاوی نوشتار را به RTL تغییر دهیم و یا Text-Align نوشتار را به سمت راست بیاوریم. در نگاه اول شاید مشکل حل شده باشد اما واقعیت آن است که این دردسر بزرگ به این راحتی‌ها قابل حل نیست مگر اینکه از یونیکد استفاده کنید.

برای رفع مشکل بالا کافی است یک  قالب کیبورد استاندارد فارسی  ( در حال حاضر بالاترین نسخه قالب کیبورد فارسی،  ISIRI 9147 است، که می‌توانید آن را  از این آدرس دانلود کنید، قبلا یک مطلب برای نصب این قالب کیبورد نوشتم که در مطالب مرتبط با یونیکد هست و می‌توانید آن را از آرشیو وبلاگ پیدا کنید) بر روی سیستمتان نصب کنید. پس از نصب ماتصا ۹۱۴۷ باید از کاراکترهای ویژه که باعث پیاده سازی الگوریتم‌های دوجهته ( Bidirectional Algorithm ) می‌شود استفاده کنید.

در استاندارد یونیکد کاراکترهایی هستند که دوجهته محسوب می‌شوند مثل پرانتزها و غیره، این کاراکترها چون در همه زبانها کاربرد دارند یکبار پیاده سازی شدند، جهت نوشتار تعیین کننده نوع نمایش این کاراکترهاست، برای مثال پرانتز وقتی در متن انگلیسی نوشته می‌شود با این صورت ) باز می‌شود و به این صورت ( بسته و در فارسی به این صورت ( باز می‌شود و به این صورت ) بسته.

این توضیحات برای این بود تا درک دقیقی از کارایی الگوریتم دوجهته داشته باشید، حالا بماند که این الگوریتم دوجهته در نسخه‌های قدیمی ویندوز ( پیش از ویستا ) درست پیاده‌سازی نشده بود و در برنامه‌ها باعث وقوع مشکلاغت بسیاری می‌شد که خود ما در شرکت فراکنش در حال بررسی و رفع این مشکل هستیم و مطلب قبلی هم که مراجعی برای پیگیری یونیکد بود، برای برطرف کردن همین مشکلات بود که هنوز به شکل دلخواه ما مرتفع نشده و در حال بررسی هستیم.

اما از موضوع دور نشویم برای رفع مشکل بهم ریختگی نوشتار فارسی در جملات LTR کافی است از کاراکترهای ویژه الگوریتم دوجهته استفاده کنید. استاندارد یونیکد در ضمیمه شماره ۹ خود به این الگوریتم پرداخته و توضیحات جامع و کافی در این مورد داده که اگر علاقه‌مند بودید می‌توانید در اینجا اینجا متن کامل آن را مطالعه کنید.
طبق این استاندارد هروقت که شما در یک متن مایل بودید که راست به چپ بنویسید باید در ابتدای جمله کاراکتر زیر متن راست به چپ یا RLE را قرار بدهید. پیش از ادامه لازم می‌دانم که این کاراکترها را معرفی کنم.

نشانه چپ به راست که در یونیکد با نام LRM و با کد 200E شناخته می‌شود
نشانه راست به چپ که در یونیکد با نام RLM و با کد 200F شناخته می‌شود
زیر متن چپ به راست که در یونیکد با نام LRE و با کد 202A شناخته می‌شود
زیر متن راست به چپ که در یونیکد با نام RLE و با کد 202B شناخته می‌شود
زیر متن اکیدا چپ به راست که در یونیکد با نام LRO و با کد 202D شناخته می‌شود
زیر متن اکیدا راست به چپ که در یونیکد با نام RLO و با کد 202E شناخته می‌شود
پایان زیر متن که در یونیکد با نام PDF و با کد 202C شناخته می‌شود

ISIRI 9147 Keyboard Layout - With Alt Down
ISIRI 9147 Keyboard Layout - With Alt Down

کاراکتر RLM پیش از یک کاراکتر دو جهته می نشیند و آن کاراکتر را بصورت راست به چپ نشان می‌دهد.

کاراکتر LRM پیش از یک کاراکتر دوجهته می‌نشیند و آن کاراکتر را بصورت چپ به راست نشان می‌دهد.

کاراکتر RLE پیش از یک جمله که دارای کلمات دوزبانه است می‌نشیند و جمله را کاملا بصورت راست به چپ نشان می‌دهد درست مثل زمانی که در برنامه Word روی نماد راست به چپ کلیک می‌کنید. برای رفع مشکل بالا هم باید از همین کاراکتر استفاده کرد. توجه داشته باشید که این کاراکتر صرفا جهت نوشتار را تعیین می‌کند و جهت قرارگیری جمله Txt-Align را تغییر نمی‌دهد بنابراین جمله شما با اینکه راست به چپ قابل خواندن است، ولی کماکان به سمت چپ TextBox خواهد چسبید.

کاراکتر LRE  پیش از یک جمله که دارای کلمات دوزبانه است می‌نشیند و جمله را کاملا بصورت چپ به راست نشان می‌دهد درست مثل زمانی که در برنامه Word روی نماد راست به چپ کلیک می‌کنید.

کاراکتر RLO  پیش از یک جمله که دارای کلمات دوزبانه است می‌نشیند و جمله را کاملا بصورت راست به چپ نشان می‌دهد. تفاوت RLO با RLE در آنجاست که RLE با کاراکترهای کلمات انگلیسی کاری ندارد، ولی RLO همه جمله را می‌چرخاند کلمات فارسی درست در سمت راست قرار می‌گیرند و کلمات انگلیسی برعکس می‌شوند مثلا اگر کلمه WhatsHappen را با RLO نشان دهید این کلمه تبدیل می‌شود به neppaHstahW

کاراکتر LRO هم درست برعکس RLO کار می‌کند و همه کاراکترها را به سمت چپ می‌چرخاند.

کاراکتر PDF در انتهای جمله شما که ممکن است چند پاراگراف یا حتی یک کتاب !!! باشد قرار می‌گیرد و مشخص می‌کند که به انتهای محدوده مورد نظر رسیدیم، مثلا اگر شما محدوده‌ای را RLE مشخص کردید و حالا می‌خواهید LRE بنویسید باید انتهای محدوده را با PDF مشخص کنید.

با توجه به مطالب گفته شده در بالا، برای تصحیح جمله بالا باید پیش از آنکه اقدام به نوشتن جمله کنید، ابتدا یک کاراکتر RLE که در استاندارد ISIRI 9147 بر روی کلید ‏[+‫Alt قرار گرفته را تایپ کرده و سپس اقدام به نگارش جمله کنید. به این ترتیب جمله بالا به این شمل نشان داده خواهد شد

‫این یک جلمه به زیان فارسی است که کلمات English در آن باعث Break در جمله می‌شود

در نگارش این مطلب و درواقع مشخص شدن راه حل افشار محبی از همکاران من در شرکت فراکنش راهنمایی‌های بسیار خوبی کرد که همینجا از او قدردانی می‌کنم.

لینکهای مرتبط

ضمیمه شماره ۹ استانداراد یونیکد در مورد الگوریتم‌های دوجهته

متن استاندارد ISIRI 6219

متن استاندارد ISIRI 9147

دانلود قالب کیبورد استاندارد ISIRI 9147

وبلاگ افشار محبی

شرکت فراکنش

مراجعی برای ارتباط با دنیای یونیکد

Unicode Logo
Unicode Logo

گاهی وقتها نیاز است تا با اشخاصی که یک تکنولوژی یا نرم افزار یا … را توسعه می‌دهند، ارتباط داشته باشیم. علت این امر می تواند متفاوت باشد ، ‌ولی نهایتا ارتباط با یک گروه توسعه دهنده ، معمولا برای رفع یک مشکل برقرار می شود.

ما نیز در شرکت فراکنش  برای سازگار کردن برنامه شرکت مان با یونیکد ، مجبور شدیم تا با یک سری از افراد توسعه دهنده در شرکت ها و سازمان های مختلف ارتباطاتی را برقرار کنیم، این ارتباطات بعضا برقرار و بعضا هنوز برقرار نشده. من در این مطلب سعی دارم تا مراجعی را برای پیگیری مشکلات مربوط به یونیکد معرفی کنم.

اولین جایی که خیلی ها با آن ارتباط خواهند داشت احتمالا شرکت شرکت فارسی وب شریف  خواهد بود، چرا که این تیم جدیدا وظیفه تهیه و تدوین استاندارد ماتصا ۹۱۴۷ یا همان ISIRI 9147 را برعهده داشته است . این شرکت همچنین وظیفه تهیه چند فونت استاندارد را نیز بر عهده داشته است .

لازم بذکر است که بیشتر افرادی که در پروژه ای.سی.ری ۹۱۴۷ حضور داشتند در حال حاضر در کشور نیستند و برای کار به خارج از کشور رفته اند . اگر بخواهید با آنها ارتباط برقرار کنید می توانید با یک جستجوی ساده روی گوگل وبلاگ ها و سایتهای شخصی آنها را بدست بیاورید . اسامی اشخاصی که وظیفه پیاده سازی استاندارد ماتصا ۹۱۴۷ را برعهده داشته اند در مستندات این استاندارد وجود دارد. دو نفر از اعضای این تیم روزبه پورنادر و بهداد اسفهبد بودند که با کلیک بر روی نام آنها می توانید به سایت شخصی‌شان بروید.

یکی دیگر از مراجع مهم درمورد یونیکد ، سایت رسمی یونیکد است که هم اطلاعات بسیار خوبی دارد و هم می توان با گروه های مختلفی که در آن وجود دارد براحتی ارتباط برقرار کرد . لیستی از آدرس های ای-میل کنسرسیوم یونیکد را می توانید در  اینجا  ملاحظه کنید.

Michael Kaplan
Michael Kaplan

و اما آقای مایکل کاپلان که از افراد مهم و تاثیر گذار در مایکروسافت است را می توانید در این آدرس پیدا کنید . مایکل کاپلان در بحث Localization بخصوص RTL و مباحث مرتبط خیلی خوب کار کرده و ارتباطات خیلی ها را از بیرون مایکروسافت با داخل مایکروسافت برقرار کرده است.

گروه محاسبات پارسی یا همان Persian Computing هم مکان بسیار خوبی است برای اشخاصی که می‌خواهند با افراد مرتبط ( بخصوص ایرانی ها ) ارتباط برقرار کنند . در این گروه مباحث خوبی پیرامون مباحث یونیکد و … مطرح می‌شود.

Mark Davis
Mark Davis

و اما مارک دیویس معروف که به نوعی از پدران یونیکد به حساب میاد رو می تونید در این آدرس پیدا کنید . او در شرکت های بزرگی کار کرده که بکار گیری این شخص در شرکت های یاد شده بخوبی از تسلط و تاثیرگذاری این فرد در دنیای یونیکد خبر می دهد . او در کنسرسیوم یونیکد ، مکینتاش ، جاوا و گوگل کار کرده او از بزرگانی است که با الگوریتم های دوجهته و مسایل پیرامونش  بخوبی آشناست.

اما اگر از جنبه تبلیغاتی به موضوع نگاه نشود ، شرکت فراکنش هم در زمینه یونیکد فعالیت های بسیار خوبی کرده که نمونه هایی از مشکلات رفع شده و کارهای انجام شده را در وبلاگ شخصی خود من  و همچنین وبلاگ شخصی افشار محبی می توانید ملاحظه کنید. در پایان از دوستانی که مراجع دیگری در ارتباط با یونیکد را می‌شناسند ، درخواست می کنم که مراجعشان را ذکر توضیحات کوتاهی در قسمت نظرات همین مطلب اضافه کنند تا سایرین هم بتوانند از این مطالب استفاده کنند .

لینک هایی که در این مطلب معرفی شده اند را در زیر لیست می کنم

شرکت فارسی وب شریف

گروه ایرانی محاسبات پارسی ( Persian calculation ) در گوگل

سایت رسمی کنسرسیوم یونیکد

آدرس ای-میل‌های کنسرسیوم یونیکد

وبلاگ شخصی روزبه پورنادر ( از اعضای تاثیرگذار تیم فارسی وب هنگام پیاده سازی استاندارد ماتصا ۹۱۴۷ )

وبلاگ شخصی بهداد اسفهبد ( از اعضای تاثیرگذار تیم فارسی وب هنگام پیاده سازی استاندارد ماتصا ۹۱۴۷ )

سایت شخصی آقای مایکل کاپلان

سایت شخصی آقای مارک دیویس

شرکت فراکنش

وبلاگ شخصی افشار محبی ( از کارمندان فراکنش و فعال در زمینه یونیکد )

وبلاگ شخصی ناصر حاجلو ( از کارمندان فراکنش و فعال در زمینه یونیکد )

برطرف کردن مشکل نمایش کاراکترهای یونیکد در Reporting Services

SQL Server 2008
SQL Server 2008

گزارش های Reporting Service معمولا با فراخوانی یک Function یا StoreProcedure که در پایگاه داده نوشته می شوند و گرفتن یک سری فیلد ( که در فانکشن ) نوشته شده تولید می شوند .

در حالت عادی هیچ مشکلی وجود ندارد و کوئری های شما بخوبی خروجی می دهند و اگر Design خوبی ( یونیکدی ) داشته باشید به مشکلی بر نمی خورید . مشکل وقتی پیش خواهد آمد که بجای اینکه از یک Table خروجی بگیرید بصورت دستی در یک case یک رشته متنی ( فارسی ) بنویسید و با حالت های مختلف یکی از این رشته ها را برای گزارش بفرستید .

با این کار خروجی ای که Sql Server تولید خواهد کرد یک کلمه غیر یونیکد است و در نهایت در خروجی شما کلمات غیریونیکد می بینید . برای مثال وقتی در یک فانکشن داشته باشید

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetLetterTypeName]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’))
DROP FUNCTION [dbo].[GetLetterTypeName]
CREATE FUNCTION GetLetterTypeName(@letterType int )
RETURNS Nvarchar(255)
declare @res nvarchar(255)
–collate Albanian_CI_AI_KS_WS not null–Persian_100_CS_AI
set @res =”

if @LetterType = 0
set @res = ‘نامه رسیده’

if @LetterType = 1
set @res = ‘نامه ارسالی’

if @LetterType = 2
set @res = ‘نامه داخلی’

return @res

نمایش غیرص�ی� کاراکترهای یونیکد در گزارش ها که توسط Sql Server تولید می شود
نمایش غیرصحیح کاراکترهای یونیکد در گزارش ها که توسط Sql Server تولید می شود

وقتی در گزارش بجای کلمه نامه ارسالی کامه نامه ارسالي  ( به حرف ی دو نقطه در آخر کلمه دقت کنید ) را تولید خواهد کرد . برای رفع این مشکل باید قبل از رشته تولیدی حرف N را بصورت زیر قرار دهید .

if @LetterType = 0
set @res = N ‘نامه رسیده’

if @LetterType = 1
set @res = N’نامه ارسالی’

if @LetterType = 2
set @res = N’نامه داخلی’

نمایش ص�ی� کاراکترهای یونیکد در گزارش ها پس از اصلا� رشته
نمایش صحیح کاراکترهای یونیکد در گزارش ها پس از اصلاح رشته

در نهایت خروجی شما در گزارش صحیح خواهد شد . با تشکر از افشار محبی و مسعود رمضانی به خاطر درمیان گذاشتن وحل این مشکل .

ارتباط کیبورد با یونیکد


در ادامه مطالب مرتبط با یونیکد ، امروز به بررسی چگونگی نوشتن و ایجاد متن های یونیکد خواهیم پرداخت و ارتباط یونیکد رو با کیبورد بررسی می کنیم . توصیه می کنم پیش از مطالعه این مطلب مطالب زیر رو بخونید .

  1. فونت یونی‌کد چیست ؟
  2. بررسی ساختار یونی‌کد
  3. و یکسری مشکلاتی که یونیکد برای زبان فارسی به علت غیراستاندارد بودن فونت ها ایجاد کرده ،‌ توی این مطلب بخونید :‌  رفع مشکلات در Convert کردن پروژه Reporting Services 2005 به Reporting Services 2008

با توجه به مطالب گفته شده در بالا ، متوجه شدیم که یونیکد یک استاندارد است و وابسته به هیچ پلت فرمی ( سیستم عامل یا سخت افزار خاص ) نیست . حالا فرض کنید که شما از یک فونت یونیکد ( ‌مثل Arial )، برای تایپ کردن استفاده می کنید ، آیا هرچیزی که تایپ می کنید ، یونیکد خواهد بود ؟ در نظر اول موضوع خیلی ساده به نظر می رسد و خیلی محکم می شود جواب داد که بله ، وقتی از یک فونت استاندارد استفاده می کنیم ، هر چه می نویسیم یونیکد خواهد بود؛ اما واقعیت چیز دیگری است .

همانطور که در مطلب بررسی ساختار یونیکد گفتم هر گلیف دارای یک کد منحصر به فرد و مخصوص به خود است که هیچ گلیف دیگری نباید در جای مربوط به گلیف دیگر قرار بگیرد . حالا فرض کنید که شما شروع می کنید به تایپ کردن با کیبورد . مثلا “ناصر حاجلو، نویسنده سری مطالب یونیکد است” از نظر یونیکد این جمله از دو سری حروف استفاد کرده ، سری اول حروف مشترک فارسی و عربی ( که جزو حروف عربی به شمار می روند ) و دوم حروف فارسی ( مثل ک ( در کلمه یونیکد ) و ی ( در خود کلمه یونیکد ) .

پیش از تایپ کردن جمله بالا شما باید زبان نوشتاری سیستم را به فارسی تغییر دهید ، به این منظور از پیش باید زبان فارسی را بر روی سیستم عامل خودتان نصب کرده باشید ( که کار بسیار ساده ایست و درادامه توضیح می دهم) وقتی زبان فعال را به فارسی تغییر می دهید . dllی که قبلا با نصب کردن زبان فارسی روی سیستم عامل نصب شده بوده ( مثلا kbdfa.dll یا persian.dll به داخل بافر کیبورد load می‌شود و منتظر دریافت حروف می شود . وقتی شما متن بالا را تایپ می کنید ، هنگامیکه روی هر کاراکتر کیبورد فشار می آورید ، برنامه درایور کیبورد با توجه به زبان فعال ( که dll آن در بافر کیبورد لود شده است ) کد مرتبط با کلید فشار داده شده را برای سیستم عامل ارسال می کند ، سیستم عامل هم کد را برای برنامه اجرایی می فرستد و نهایتا کاراکتر مربوطه روی مانیتور ،‌ نمایش داده می شود .

در این سناریو مهمترین وظیفه را درایور کیبورد انجام می دهد ، اگر شما درایور کیبوردتان را نصب نکرده باشید و از درایور پیش فرض ویندوز استفاده کنید ، هر چه بر روی کلید ک یا ی فشار بدهید بجای اینکه حرف ی فارسی به شما نشان داده شود ، حرف ک عربی یا ي عربی ( با دو نقطه در زیر آن ) به شما نشان داده می شود ( برای ازمایش حتما از یک فونت استاندارد مثل Arial استفاده کنید چون فونت های فارسی این مشکل نمایش حروف غیر فارسی را با جایگزین کردن حروف فارسی معادل ( به این ترتیب که حرف ک فارسی را جای کاراکتر ک عربی و حرف ی فارسی را بجای حرف ي عربی قرار داده اند – یعنی دو نقطه زیر ي را برداشته اند )  حل کرده اند !!!! مثلا بجای حرف عربی ي با دو نقطه در زیر که کد یونیکد آن 064A است ، حرف ی فارسی بدون نقطه در زیر را که کد یونیکد آن 06CC است جایگزین کرده اند و شما وقتی حرف ی را فشار می دهید در واقع کد یونیکد 064A را به سیستم عامل می فرستید و سیستم عامل هم همین کد را برای برنامه می فرستد ، حالا اگر از فونت استاندارد یونیکد استفاده کنید حرفی که نمایش داده می شود ي با دو نقطه در زیر و اگر از فونت های فارسی مثل B Nazanin استفاده کنید ، حرف نمایشی ی فارسی بدون نقطه خواهد بود . چون شرکت ایجاد کننده فونت بجای حرف عربی ي حرف فارسی ی را جایگزین کرده و به خیال خود مشکل حرف ی را حل کرده است !!!)

کاری که درایور کیبورد ویندوز شما انجام می دهد درواقع ایجاد یک keyboard layout است که برای زبان شما بهینه شده است . به همین دلیل است که وقتی شما درایور را نصب نکردید هر چه بر روی ک فشار می دهید بجای ک فارسی حرف ک عربی را مشاهده می کنید . البته خوشبختانه در ویندوز ویستا این مشکلات تا حد بسیار قابل قبولی حل شده ، چون قالب کیبورد تعریفی بجای کدهای عربی ، کدهای فارسی را برای سیستم عامل ارسال می کند . اما برای رفع این مشکل ( حتی در ویستا ) باید از قالب‌های استاندارد کیبورد استفاده کنید . 

برای اطلاع بیشتر در مورد نحوه چیدمان کاراکترها بر روی کیبورد و استاندارد فعلی کشور برای چیدمان حروف مستندات منتشر شده زیر را مطالعه کنید .

فن‌آوری اطلاعات – تبادل و شیوه نمایش اطلاعات فارسی بر اساس یونی‌کد

فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه  ( توضیحات مربوط به استاندارد ISIRI 9147 )

توجه داشته باشید که مستند فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه توسط موسسه استاندارد و تحقیقات صنعتی ایران به عنوان تنها استاندارد چیدمان کیبورد در کشور ، با نام ISIRI 9147 منتشر شده است . قالب کیبورد ISIRI 9147 را می توانید از لینک زیر بگیرید .

دانلود قالب کیبورد ISIRI 9147 که آخرین چیدمان استاندارد کشور است . ( توجه داشته باشید که این استاندارد جایگزین استاندارد 2901 شده است و استاندارد 2901 از درجه اعتبار ساقط است )

بنابراین قالب کیبورد ای سی ری ۹۱۴۷ ، در حال حاضر آخرین نسخه استاندارد ، برای کیبورد های فارسی است . پس از دانلود قالب کیبورد ISIRI 9147 که لینک آن در بالا بود ، باید فایل را extract کنید . یک فایل Setup در اینجا هست که باید آن را اجرا کنید . توجه داشته باشید که باید حتما با سطح دسترسی مدیر سیستم وارد شده باشید ( یعنی کاربر شما باید Admin هم باشد ) نصب بسیار ساده است و فقط با دو گزینه Next و کمتر از ۳۰ ثانیه نصب به اتمام می رسد .

پس از اتمام نصب قالب کیبورد چنانچه انتظار می رود ، این قالب هنوز فعال نشده و به منظور فعال سازی قالب کیبورد باید به Control Panel بروید ، از آنجا بر روی Regional & language option کلیک کنید ، از پنجره باز شده به قسمت Languages بروید و بر روی Details کلیک کنید . معمولا زبان انگلیسی و فارسی از پیش روی سیستم نصب شده و قابل مشاهده است .

زبان فارسی قبل از اضافه کردن قالب کیبورد استاندارد ISIRI 9147
زبان فارسی قبل از اضافه کردن قالب کیبورد استاندارد ISIRI 9147

همانطور که در بخش Keyboard مشاهده می کنید ، کیبورد فارسی ( که چینش آن با استاندارد ISIRI 9147 یکی نیست و چینش آن هم استاندارد نیست) بر روی سیستم نصب شده است ، حالا برای اضافه کردن کیبورد استاندارد فارسی ، روی کیبورد فارسی کلیک کنید و سپس بر روی Add کلیک کنید . از پنجره ای که باز می شود از بخش Input Language زبان Farsi را انتخاب کنید و تیک قسمت Keyboard Layout/IME را بگذارید و از منوی پایین افتادنی آن Persian Experimental Standard را انتخاب کنید . و بر روی OK کلیک کنید .

اضافه کردن قالب کیبورد استاندارد ISIRI 9147
اضافه کردن قالب کیبورد استاندارد ISIRI 9147

حالا در لیست Keyboard های شما ، دو کیبورد فارسی وجود دارد ، یکی Farsi و یکی Persian Experimental Standard ، برای اینکه بعدا دچار مشکل نشوید روی کیبورد Farsi کلیک کنید و روی دکمه Remove کلیک کنید . با این کار کیبورد فارسی اضافه از سیستم شما حذف خواهد شد .

قالب کیبورد استاندارد فارسی اضافه شده و قالب کیبورد غیراستاندارد پاک شده
قالب کیبورد استاندارد فارسی اضافه شده و قالب کیبورد غیراستاندارد پاک شده

نهایتا باید بر روی OK کلیک کنید. و توجه داشته باشید که برای اعمال تغییرات حتما باید سیستم را یکبار Reset کنید . و تا وقتی که سیستم را مجددا راه اندازی نکردید تغییرات شما اعمال نخواهد شد . توصیه می کنم این کیبورد را حتما بگیرید و بر روی سیستم خودتان نصب کنید . چون این کیبورد تنها کیبورد استاندارد فارسی است و مشکل یونیکد ندارد .

نهایتا قالب کیبورد شما به شکل زیر در خواهد آمد : ( حالت با Alt رو نزاشتم )

نمایش عادی کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147
نمایش عادی کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147

نتیجه گیری

نمایش Shift کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147
نمایش Shift کیبورد بر اساس استاندارد ماتصا 9147 - ISIRI 9147



استاندارد یونیکد از دو جنبه قابل بررسی است ، بخش اول تولید اسناد یونیکد است که برای اینکار باید از یک قالب کیبورد استاندارد ( که قابلیت تولید کدهای صحیح یونیکد را دارد – مثل ISIRI 9147 ) استفاده کرد . و البته فایل مورد نظر را باید بصورت Unicode یا UTF-8 ذخیره کرد . و بخش دوم نمایش اسناد یونیکد است که برای مشاهده صحیح اسناد یونیکد باید فونت استاندارد یونیکد داشته باشید . با فرصتی که شرکت فراکنش در اختیار ما گذاشت توانستیم تمامی فونت های زبان فارسی را بررسی کرده و از میان آنها استاندارد ترین فونتها را انتخاب کنیم .

بصورت کلی نتیجه این شد که فقط و تنها فقط ۴ فونت یونیکد استاندارد ( براساس استاندارد ISIRI 9147 ) وجود دارد . این چهار فونت عبارتند از : Terafik که تیم فارسی وب آن را تهیه کرده . XB tabriz که توسط انجمن ایرماگ تهیه شده . فونت Lateef و Scheherazade که توسط sil تهیه شده است . سایر فونت ها که توسط همین تیم ها یا سایر اشخاص تولید شده کاملا غیراستاندارد هستند .

البته فونتهای ایرماگ فقط و تنها فقط یک مشکل کاراکتر دارند و آن مربوط به کاراکتر جداکننده هزاره عربی (فارسی) است که در همه فونتها بجز تبریز در پایین قرار دارد ( مثل ویرگول – که استاندارد یونیکد می گوید این کاراکتر باید بالا باشد ) اگر از این مشکل صرف نظر کنیم ، فونتهای ایرماگ بیشترین سازگاری را با استاندارد یونیکد دارند . فونتهای فارسی وب هم مشکلاتی دارند که در کل می شود از بعضی از آنها گذشت . افشار محبی مطلب بسیار جامع و خوبی در این زمینه نوشته که مطالعه آن را به شما توصیه می‌کنم.

لینک های مرتبط

لینک مستقیم همین مطلب در وبلاگ من

بررسی ساختار یونی‌کد

فونت یونی‌کد چیست ؟

یکسری مشکلاتی که یونیکد برای زبان فارسی به علت غیراستاندارد بودن فونت ها ایجاد کرده :‌ رفع مشکلات در Convert کردن پروژه Reporting Services 2005 به Reporting Services 2008

جدول مقایسه فونتهای رایج فارسی که افشار محبی آن را تهیه کرده است در این مطلب مشکلات هر فونت بصورت جداگانه آمده است . مطالعه این مطلب را توصیه می کنم .

انجمن ایرماگ

صفحه دانلود فونت های ایرماگ توصیه می کنم در صورتی که می خواهید از یکسری فونت استاندارد استفاده کنید از این سری فونت ها و سری فارسی وب استفاده کنید .

شرکت فراکنش حامی نوشتن این مطلب

شرکت فارسی وب شریف

دانلود فونتهای فارسی وب

بنیاد غیرانتفاعی سیل SIL تولید کننده فونتهای استاندارد شهرزاد و لطیف

صفحه دانلود فونتهای شهرزاد و لطیف که بناید SIL آن ها را تولید کرده است توجه داشته باشید که این فونتها عری هستند ولی گلیفهای فارسی را هم کامل پیاده سازی کرده اند .

دانلود مستقیم فونت شهرزاد از بنیاد SIL

دانلود مستقیم فونت لطیف از بنیاد SIL

دانلود قالب کیبورد ISIRI 9147

 موسسه استاندارد و تحقیقات صنعتی ایران

فن‌آوری اطلاعات – چیدمان حروف و علائم فارسی بر صفحه کلید رایانه ( توضیحات مربوط به استاندارد ISIRI 9147 )

فن‌آوری اطلاعات – تبادل و شیوه نمایش اطلاعات فارسی بر اساس یونی‌کد