문제
UTF-8에는 많은 아랍어 텍스트 라인이 있습니다. 이 표시를하려는 장치는 아랍어 텍스트가 표시되는 것을 지원하지 않습니다. 따라서 텍스트를 이미지로 변환해야합니다.
각 텍스트 라인을 특정 너비의 이미지로 저장하고 싶습니다. 특정 글꼴도 사용해야합니다. 이것을하는 가장 좋은 방법은 무엇입니까? 여기서 도움이 될 수있는 도구를 아는 사람이 있습니까?
지금까지 발생하는 문제 :
PHP + GD : 아랍어 문자는 분리되고 필기체가 아닌 것처럼 보입니다. vb.net : 각 텍스트 라인을 RichTextBox에 버릴 수 있지만 그 컨트롤의 이미지를 내보내는 방법을 모르겠습니다. 플래시 : 오른쪽에서 왼쪽 텍스트를 지원하지 않습니다.
해결책
에 관해서 아라비아 말, 당신은 도서관이 필요합니다 리버스 숯/글리프 ~을 위한 PHP/GD. 예를 들어보십시오 http://sourceforge.net/projects/ar-php/ 또는 http://www.ar-php.org/.
확실하게 하다 당신의 PHP 파일 인코딩이 있습니다 유니 코드/UTF.
예를 들어> 개방 메모장> UTF-8으로 인코딩으로 저장 : :
PHP 사용에서 아랍어 타이포그래피에 대한 샘플 사용 imagettftext:
<?php
// The text to draw
require('./I18N/Arabic.php');
$Arabic = new I18N_Arabic('Glyphs');
$font = './DroidNaskh-Bold.ttf';
$text = $Arabic->utf8Glyphs('لغةٌ عربيّة');
// Create the image
$im = imagecreatetruecolor(600, 300);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 599, 299, $white);
// Add the text
imagettftext($im, 50, 0, 90, 90, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im, "./output_arabic_image.png");
echo 'open: ./output_arabic_image.png';
imagedestroy($im);
?>
출력 :
다른 팁
나는 그 말을 들었다 판고 아랍어 레이아웃을 잘 처리합니다. 그래도 사용하지 않았습니다.
업데이트:
유틸리티 pango-view
텍스트를 렌더링 할 수 있습니다 어느 언어와 이미지로 출력합니다
$ pango-view input_file.txt --no-display --output=image.png
또는 텍스트도 옵션으로 제공 할 수 있습니다.
$ pango-view --no-display --output=image.png --text="your sentence"
너비를 지정할 수도 있습니다.
--width=50 -wrap=word
<< 업데이트 종료
또는 상황에 맞는 아랍어 문자 양식과 프로세스 텍스트를 나타내는 유니 코드 문자를 사용하고 아랍어 텍스트를 올바르게 렌더링 할 수없는 시스템에서 올바르게 렌더링하는 몇 가지 프로그램이 있습니다.
내가 아는 것들은 다음과 같습니다.
그들은 모두 오픈 소스이므로 이러한 언어를 사용하지 않더라도 코드를 연구하고 선택한 프로그래밍 언어로 솔루션을 만들 수 있습니다.
여러 가지 방법이 있습니다. 예를 들어 Windows.forms를 사용하면 다음과 같습니다.
- 빈 이미지 인스턴스를 만듭니다. 이 시점에서 이미지의 차원을 정의한다고 생각합니다.
- 그래픽을 사용하여 이미지에서 그래픽 인스턴스 생성 .fromimage 메소드
- 제어 방법 (RichTextBox)의 메소드를 호출하여 자체적으로 페인트를 칠하도록 지시합니다. 그리고 그 방법으로 이미지와 관련된 그래픽 인스턴스를 전달하여 이미지에 페인트를 칠하십시오.
여전히 답을 기다리고 있는지 확실하지 않지만 문제에 대한 매우 깨끗하고 깔끔한 해결책이 있습니다. CSS 클래스를 기반으로 RTL을 포함한 텍스트를 이미지로 변경할 수 있습니다. 그러나 먼저 PHP와 GD를 말해 드리겠습니다. RTL 텍스트에는 좋지 않습니다. 너비를 기준으로 ASP.NET 텍스트 교체를 시도해야합니다.
일단 내가 같은 길을 걸고 며칠 동안 고생했습니다. 여기에해야 할 일이 있습니다.
먼저 다음 주소로 이동하여 자습서를보고 파일을 다운로드하십시오.http://weblogs.asp.net/yaneshtyagi/archive/2008/11/07/text-to-image-convertor.aspx
둘째, ASP.NET 서버가 필요합니다. 설치하거나 Mono Asp.net 서버와 같은 가상 서버 중 하나를 사용할 수 있거나 Visual Web Developer를 사용할 수 있습니다.
얻을 수있는 코드는 텍스트를 한 줄 이미지로 변환하지만 너비를 지정할 수 있습니다. 이 경우 긴 텍스트 라인이 줄어들고 눈에 띄지 않습니다. 필요한 것은 지정된 너비를 기준으로 랩 랩을하는 것입니다.
이 링크에서는 텍스트 랩을 달성하기 위해 fontwriter.ashx의 코드를 변경하는 방법을 설명하는이 링크에서. http://www.codeproject.com/questions/189513/dynamic-image-replacement-method-with-csharp.aspx
세 번째 ASP.NET 서버를 통해 페이지를 실행하십시오. 이미지를 저장할 수 있으면 마우스 오른쪽 버튼을 클릭하고 Firefox를 사용하여 Firefox가 지금까지 가장 잘 작동합니다.
이제 모든 텍스트가 이미지로 변환되고 원본 텍스트가 이미지에 추가됩니다. 대체 꼬리표. 도움이되기를 바랍니다.
곧이 문제에 대한 튜토리얼을 게시 할 계획입니다. 나중에 www.codeproject.com을 확인하십시오.