NAME
Lingua::AR::MacArabic - transcoding between Mac OS Arabic encoding and Unicode
SYNOPSIS
(1) using function names exported by default:
use Lingua::AR::MacArabic;
$wchar = decodeMacArabic($octet);
$octet = encodeMacArabic($wchar);
(2) using function names exported on request:
use Lingua::AR::MacArabic qw(decode encode);
$wchar = decode($octet);
$octet = encode($wchar);
(3) using function names fully qualified:
use Lingua::AR::MacArabic ();
$wchar = Lingua::AR::MacArabic::decode($octet);
$octet = Lingua::AR::MacArabic::encode($wchar);
# $wchar : a string in Perl's Unicode format
# $octet : a string in Mac OS Arabic encoding
DESCRIPTION
This module provides decoding from/encoding to Mac OS Arabic encoding (denoted MacArabic hereafter).
Features
- bidi support
-
Functions provided here should cope with Unicode accompanied with some directional formatting codes: i.e.
PDF
(orU+202C
),LRO
(orU+202D
), andRLO
(orU+202E
). - additional mapping
-
Arabic-Indic Digits and some related characters in Unicode are encoded in MacArabic as if normal digits (
U+0030
..U+0039
) when they appear in the left-to-right direction.
Functions
$wchar = decode($octet)
$wchar = decodeMacArabic($octet)
-
Converts MacArabic to Unicode.
decodeMacArabic()
is an alias fordecode()
exported by default. $octet = encode($wchar)
$octet = encode($handler, $wchar)
$octet = encodeMacArabic($wchar)
$octet = encodeMacArabic($handler, $wchar)
-
Converts Unicode to MacArabic.
encodeMacArabic()
is an alias forencode()
exported by default.If the
$handler
is not specified, any character that is not mapped to MacArabic is deleted; if the$handler
is a code reference, a string returned from that coderef is inserted there. if the$handler
is a scalar reference, a string (aPV
) in that reference (the referent) is inserted there.The 1st argument for the
$handler
coderef is the Unicode code point (integer) of the unmapped character.E.g.
sub hexNCR { sprintf("&#x%x;", shift) } # hexadecimal NCR sub decNCR { sprintf("&#%d;" , shift) } # decimal NCR print encodeMacArabic("ABC\x{100}\x{10000}"); # "ABC" print encodeMacArabic(\"", "ABC\x{100}\x{10000}"); # "ABC" print encodeMacArabic(\"?", "ABC\x{100}\x{10000}"); # "ABC??" print encodeMacArabic(\&hexNCR, "ABC\x{100}\x{10000}"); # "ABCĀ𐀀" print encodeMacArabic(\&decNCR, "ABC\x{100}\x{10000}"); # "ABCĀ𐀀"
CAVEAT
Sorry, the author is not working on a Mac OS. Please let him know if you find something wrong.
Maybe bug?: The (default) paragraph direction is not resolved. Does Mac always surround by LRO
..PDF
or RLO
..PDF
the characters with bidirectional type to be overridden?
AUTHOR
SADAHIRO Tomoyuki <SADAHIRO@cpan.org>
Copyright(C) 2003-2011, SADAHIRO Tomoyuki. Japan. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
- Map (external version) from Mac OS Arabic character set to Unicode 2.1 and later (version: c02 2005-Apr-04)
-
http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ARABIC.TXT
- Registry (external version) of Apple use of Unicode corporate-zone characters (version: c03 2005-Apr-04)
-
http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CORPCHAR.TXT
- The Bidirectional Algorithm