• 0
Lamyaa

كيف يمكن معرفة موقع الحرف في الكلمة ؟

سؤال

السلام عليكم ورحمة الله وبركاته

أسعد الله أيامكم بكل خير

 

مؤخراً كنت مضطرة لاستخدام اللغة العربية في برانامج لا يدعم اللغة العربية (ليس قلبا للمحارف العربية إنما إظهار محارف ورموز مجهولة أو علامات استفهام) وقد استخدمت برنامج الوسيط وبرنامج أو رشيد، ولكن واجهتني مشاكل في هذه الخطوط فهناك بعض المحارف المهمة لية موجودة في تلك الخطوط المستخدمة في برنامج الوسيط أو أبو رشيد أو الرسام.

 

بحثت في الموضوع قليلا محاولة إيجاد حلول تنفع الكتابة بالعربية في البرامج التي لا تدعمها، فتحت أحد الخطوط المستخدمة في تلك البرامج فوجدت أن كل برنامج منها يستخدم خارطة محارف خاصة به والبرانامج الوسيط يقوم يتوليد أحرف أو رموز تشير إلى موقع الحرف في تلك الخريطة من المحارف.

 

أي أنني لو استطعت تحسس حالة الحرف في مربع النص (موقع الحرف في الكلمة) في أول الكلمة أو وسط الكلمة أو آخر الكلمة أو منفصل لربما يمكن عمل برنامج يعتمد على دالة الاستبدال بحيث يتم استبدال الحرف حسب موقعه برمز الحرف في خارطة المحارف الخاصة بالخط المستخدم.

 

السؤال الآن بعد المقدمة المملة والطويلة ..

كيف يمكن معرفة موقع الحرف في الكلمة ؟

لنفرض أن لدينا جملة (زهرة الحياة)

كيف استخلص برمجيا أن حرف (ز) في كلمة زهرة جاء في أول الكلمة وان حرف (هـ) جاء وسط الكلمة دون اتصال مع ما يسبقه وأن حرف (ـر) جاء متصلا مع ما قبله وأن (ة) غير متصله مع ما قبلها .. وهكذا؟

 

هل هذا ممكن بلغة C# ؟

 

ولكم خالص الشكر والتقدير

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1 إجابات على هذا السؤال .

  • 0

وأنا أبحث في الموضوع وجدت هذا الكود ولكن بلغة php

ولا أعلم إن كان يفيد في الفكرة

<?php
/**
 * word2uni
 * This code is a part of aCAPTCHA project, This copyright notice MUST stay intact for use
 * @package aCAPTCHA 
 * @author Abd Allatif Eymsh
 * @copyright (c) 2012
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 */
function word2uni($word)
{

	$new_word = array();
	$char_type = array();
	$isolated_chars = array('ا', 'د', 'ذ', 'أ', 'آ', 'ر', 'ؤ', 'ء', 'ز', 'و', 'ى', 'ة');

	$all_chars = array
		(
			'ا' => array(

				'middle'		=>   'ﺎ',

				'isolated'		=>   'ﺍ'
				),

			'ؤ' => array(

				'middle'		=>   'ﺅ',

				'isolated'		=>   'ﺆ'
				),
			'ء' => array(
				'middle'		=>   'ﺀ',
				'isolated'		=>   'ﺀ'
				),
			'أ' => array(

				'middle'		=>   'ﺄ',

				'isolated'		=>   'ﺃ'
				),
			'آ' => array(

				'middle'		=>   'ﺂ',

				'isolated'		=>   'ﺁ'
				),
			'ى' => array(

				'middle'		=>   'ﻰ',

				'isolated'		=>   'ﻯ'
				),
			'ب' => array(
				'beginning'		=>   'ﺑ',
				'middle'		=>   'ﺒ',
				'end'			=>   'ﺐ',
				'isolated'		=>   'ﺏ'
				),
			'ت' => array(
				'beginning'		=>   'ﺗ',
				'middle'		=>   'ﺘ',
				'end'			=>   'ﺖ',
				'isolated'		=>   'ﺕ'
				),
			'ث' => array(
				'beginning'		=>   'ﺛ',
				'middle'		=>   'ﺜ',
				'end'			=>   'ﺚ',
				'isolated'		=>   'ﺙ'
				),
			'ج' => array(
				'beginning'		=>   'ﺟ',
				'middle'		=>   'ﺠ',
				'end'			=>   'ﺞ',
				'isolated'		=>   'ﺝ'
				),
			'ح' => array(
				'beginning'		=>   'ﺣ',
				'middle'		=>   'ﺤ',
				'end'			=>   'ﺢ',
				'isolated'		=>   'ﺡ'
				),
			'خ' => array(
				'beginning'		=>   'ﺧ',
				'middle'		=>   'ﺨ',
				'end'			=>   'ﺦ',
				'isolated'		=>   'ﺥ'
				),
			'د' => array(
				'middle'		=>   'ﺪ',
				'isolated'		=>   'ﺩ'
				),
			'ذ' => array(
				'middle'		=>   'ﺬ',
				'isolated'		=>   'ﺫ'
				),
			'ر' => array(
				'middle'		=>   'ﺮ',
				'isolated'		=>   'ﺭ'
				),
			'ز' => array(
				'middle'		=>   'ﺰ',
				'isolated'		=>   'ﺯ'
				),
			'س' => array(
				'beginning'		=>   'ﺳ',
				'middle'		=>   'ﺴ',
				'end'			=>   'ﺲ',
				'isolated'		=>   'ﺱ'
				),
			'ش' => array(
				'beginning'		=>   'ﺷ',
				'middle'		=>   'ﺸ',
				'end'			=>   'ﺶ',
				'isolated'		=>   'ﺵ'
				),
			'ص' => array(
				'beginning'		=>   'ﺻ',
				'middle'		=>   'ﺼ',
				'end'			=>   'ﺺ',
				'isolated'		=>   'ﺹ'
				),
			'ض' => array(
				'beginning'		=>   'ﺿ',
				'middle'		=>   'ﻀ',
				'end'			=>   'ﺾ',
				'isolated'		=>   'ﺽ'
				),
			'ط' => array(
				'beginning'		=>   'ﻃ',
				'middle'		=>   'ﻄ',
				'end'			=>   'ﻂ',
				'isolated'		=>   'ﻁ'
				),
			'ظ' => array(
				'beginning'		=>   'ﻇ',
				'middle'		=>   'ﻈ',
				'end'			=>   'ﻆ',
				'isolated'		=>   'ﻅ'
				),
			'ع' => array(
				'beginning'		=>   'ﻋ',
				'middle'		=>   'ﻌ',
				'end'			=>   'ﻊ',
				'isolated'		=>   'ﻉ'
				),
			'غ' => array(
				'beginning'		=>   'ﻏ',
				'middle'		=>   'ﻐ',
				'end'			=>   'ﻎ',
				'isolated'		=>   'ﻍ'
				),
			'ف' => array(
				'beginning'		=>   'ﻓ',
				'middle'		=>   'ﻔ',
				'end'			=>   'ﻒ',
				'isolated'		=>   'ﻑ'
				),
			'ق' => array(
				'beginning'		=>   'ﻗ',
				'middle'		=>   'ﻘ',
				'end'			=>   'ﻖ',
				'isolated'		=>   'ﻕ'
				),
			'ك' => array(
				'beginning'		=>   'ﻛ',
				'middle'		=>   'ﻜ',
				'end'			=>   'ﻚ',
				'isolated'		=>   'ﻙ'
				),
			'ل' => array(
				'beginning'		=>   'ﻟ',
				'middle'		=>   'ﻠ',
				'end'			=>   'ﻞ',
				'isolated'		=>   'ﻝ'
				),
			'م' => array(
				'beginning'		=>   'ﻣ',
				'middle'		=>   'ﻤ',
				'end'			=>   'ﻢ',
				'isolated'		=>   'ﻡ'
				),
			'ن' => array(
				'beginning'		=>   'ﻧ',
				'middle'		=>   'ﻨ',
				'end'			=>   'ﻦ',
				'isolated'		=>   'ﻥ'
				),
			'ه' => array(
				'beginning'		=>   'ﻫ',
				'middle'		=>   'ﻬ',
				'end'			=>   'ﻪ',
				'isolated'		=>   'ﻩ'
				),
			'و' => array(
				'middle'		=>   'ﻮ',
				'isolated'		=>   'ﻭ'
				),
			'ي' => array(
				'beginning'		=>   'ﻳ',
				'middle'		=>   'ﻴ',
				'end'			=>   'ﻲ',
				'isolated'		=>   'ﻱ'
				),
			'ئ' => array(
				'beginning'		=>   'ﺋ',
				'middle'		=>   'ﺌ',
				'end'			=>   'ﺊ',
				'isolated'		=>   'ﺉ'
				),
			'ة' => array(
				'middle'		=>   'ﺔ',
				'isolated'		=>   'ﺓ'
				)
		);

	if(in_array($word[0].$word[1], $isolated_chars))
	{
		$new_word[] = $all_chars[$word[0].$word[1]]['isolated'];
		$char_type[] = 'not_normal';
	}
	else
	{
		$new_word[] = $all_chars[$word[0].$word[1]]['beginning'];
		$char_type[] = 'normal';
	}

	if(strlen($word) > 4)
	{
		if($char_type[0] == 'not_normal')

		{
			if(in_array($word[2].$word[3], $isolated_chars))
			{
				$new_word[] = $all_chars[$word[2].$word[3]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[2].$word[3]]['beginning'];
				$char_type[] = 'normal';
			}
		}
		else
		{
			$new_word[] = $all_chars[$word[2].$word[3]]['middle'];
			$chars_statue[] = 'middle';

			if(in_array($word[2].$word[3], $isolated_chars))
			{
				$char_type[] = 'not_normal';
			}
			else
			{
				$char_type[] = 'normal';
			}
		}
		$x = 4;
	}
	else
	{
		$x = 2;	
	}

	for($x=4;$x< (strlen($word)-4) ;$x++)
	{
		if($char_type[count($char_type)-1] == 'not_normal' AND $x %2 == 0)
		{
			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
				$char_type[] = 'normal';
			}
		}
		elseif($char_type[count($char_type)-1] == 'normal' AND $x %2 == 0)
		{

			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'normal';
			}
		}

	}
	if(strlen($word)>6)
	{
		if($char_type[count($char_type)-1] == 'not_normal')
		{
			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
				$char_type[] = 'not_normal';
			}
			else
			{

				if($word[strlen($word)-2].$word[strlen($word)-1] == 'ء')
				{
					$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
					$char_type[] = 'normal';
				}
				else
				{
					$new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
					$char_type[] = 'normal';
				}

			}

			$x += 2;
		}
		elseif($char_type[count($char_type)-1] == 'normal')
		{

			if(in_array($word[$x].$word[$x+1], $isolated_chars))
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'not_normal';
			}
			else
			{

				$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
				$char_type[] = 'normal';
			}

			$x += 2;
		}


	}

	if($char_type[count($char_type)-1] == 'not_normal')
	{

		if(in_array($word[$x].$word[$x+1], $isolated_chars))
		{		

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

		}
		else
		{
			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

		}

	}
	else
	{
		if(in_array($word[$x].$word[$x+1], $isolated_chars))
		{

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];

		}
		else
		{

			$new_word[] = $all_chars[$word[$x].$word[$x+1]]['end'];

		}
	}

	return implode('',array_reverse($new_word));
}
?>

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .