টেক্সট স্ট্রাকচার এবং স্টাইলিং

স্লাইড এপিআই-এ, টেক্সট আকারে বা টেবিল কক্ষে থাকতে পারে। আপনি ম্যানিপুলেট এবং টেক্সট স্টাইল করার আগে, আপনাকে এর গঠন এবং স্টাইলিং কীভাবে কাজ করে তা বুঝতে হবে।

এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে পাঠ্য স্লাইড এপিআই-তে উপস্থাপন করা হয়।

পাঠ্য উপাদানের ক্রম

টেক্সট এলিমেন্ট স্ট্রাকচারের একটি ক্রম দ্বারা একটি আকৃতি বা একটি টেবিল কক্ষে থাকা পাঠ্যটি গঠিত। এই ক্রমটি পাঠ্যের গঠনকে উপস্থাপন করে, যে ক্রমে এটি শুরু থেকে শেষ পর্যন্ত প্রদর্শিত হয়।

উদাহরণ স্বরূপ, এই স্লাইডের বিষয়বস্তুগুলি বিবেচনা করুন—সমস্ত একটি পাঠ্য বাক্সে রয়েছে:

একটি সাধারণ স্লাইডের স্ক্রিনশট

উপরের স্লাইডে একটি টেক্সট বক্স রয়েছে, যার text ফিল্ডে নিম্নলিখিত ডায়াগ্রামে দেখানো টেক্সট উপাদানগুলির একটি ক্রম রয়েছে:

ডায়াগ্রাম পাঠ্য উপাদানগুলির একটি ক্রম দেখাচ্ছে

আরও সুনির্দিষ্টভাবে, পাঠ্যের এই ক্রমটি স্লাইড এপিআইতে নিম্নরূপ উপস্থাপন করা হয়েছে:

"textElements": [ {
    "endIndex": 224,
    "paragraphMarker": { "style": {} }
  }, {
    "endIndex": 130,
    "textRun": { "content": "Li lingues differe in li grammatica e li vocabules. Omnicos directe al desirabilite de un nov ", "style": {} }
  }, {
    "endIndex": 143,
    "startIndex": 130,
    "textRun": { "content": "lingua franca", "style": { "italic": True } }
  }, {
    "endIndex": 224,
    "startIndex": 143,
    "textRun": { "content": ": solmen va esser necessi far:\n", "style": {} }
  }, {
    "endIndex": 243,
    "startIndex": 224,
    "paragraphMarker": {
      "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "direction": "LEFT_TO_RIGHT", "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
      "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
  }, {
    "endIndex": 243,
    "startIndex": 224,
    "textRun": { "content": "uniform grammatica\n", "style": {} }
  }, {
    "endIndex": 257,
    "startIndex": 243,
    "paragraphMarker": {
        "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "direction": "LEFT_TO_RIGHT", "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
        "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
}, {
    "endIndex": 257,
    "startIndex": 243,
    "textRun": { "content": "Pronunciation\n", "style": {} }
}, {
    "endIndex": 277,
    "startIndex": 257,
    "paragraphMarker": {
        "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
        "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
}, {
    "endIndex": 277,
    "startIndex": 257,
    "textRun": { "content": "plu sommun paroles.\n", "style": {} }
}, {
    "endIndex": 500,
    "startIndex": 277,
    "paragraphMarker": { "style": {} }
}, {
    "endIndex": 500,
    "startIndex": 277,
    "textRun": { "content": "Ka swu thefognay, tay waddeant varpa u inzo.\n", "style": {} }
}]

TextElement বিষয়বস্তু

প্রতিটি পাঠ্য উপাদানে একটি শূন্য-ভিত্তিক সূচনা সূচী এবং শেষ সূচক থাকে, যা পৃষ্ঠা উপাদানের সম্পূর্ণ পাঠ্যের মধ্যে উপাদানটির অবস্থান বর্ণনা করে, একত্রে নিম্নলিখিত ধরনের পাঠ্য বস্তুর একটির সাথে:

পাঠ্য প্রকার বর্ণনা
অনুচ্ছেদ মার্কার এই পাঠ্য উপাদানটি একটি নতুন অনুচ্ছেদের শুরুর প্রতিনিধিত্ব করে। টেক্সট এলিমেন্টের শুরু এবং শেষ সূচক অনুচ্ছেদের সম্পূর্ণ স্প্যান উপস্থাপন করে, অনুচ্ছেদের শেষ হওয়া নতুন লাইন অক্ষর সহ। একটি অনুচ্ছেদ কখনই অন্য অনুচ্ছেদকে ওভারল্যাপ করে না। অনুচ্ছেদগুলি সর্বদা একটি নতুন লাইনের অক্ষরে শেষ হয়, তাই একটি আকৃতি বা টেবিল ঘরের পাঠ্য বিষয়বস্তুর শেষে একটি নতুন লাইন থাকে৷

অনুচ্ছেদগুলি বুলেটযুক্ত বা সংখ্যাযুক্ত তালিকার অন্তর্গত হতে পারে। যদি তাই হয়, ParagraphMarker.bullet ক্ষেত্রের বিষয়বস্তু একটি তালিকা আইডি অন্তর্ভুক্ত করে। এই আইডি একটি তালিকা উপাদান উল্লেখ করে যা TextElement ক্রম বরাবর TextContent ভিতরে বিদ্যমান। একই লজিক্যাল তালিকার মধ্যে অনুচ্ছেদ একই তালিকা আইডি উল্লেখ করবে।
TextRun এই পাঠ্য উপাদানটি পাঠ্যের একটি সংলগ্ন স্ট্রিং প্রতিনিধিত্ব করে যে সকলের একই পাঠ্য শৈলী রয়েছে। টেক্সট রান কখনই অনুচ্ছেদের সীমানা অতিক্রম করে না: এমনকি যদি একটি অনুচ্ছেদের শেষের টেক্সটটি পরবর্তী অনুচ্ছেদ থেকে শুরু হওয়া টেক্সটের মতো একই স্টাইল থাকে, তাহলেও বিষয়বস্তু নতুন লাইনের অক্ষরের পরে বিভক্ত হয়ে আলাদা টেক্সট রান তৈরি করে।

আপনার যদি একটি পৃষ্ঠা উপাদানের মধ্যে সম্পূর্ণ পাঠ্য স্ট্রিং প্রক্রিয়া করার প্রয়োজন হয়, সমস্ত পাঠ্য উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করুন, সমস্ত পাঠ্য রানে পাওয়া স্ট্রিংগুলিকে একত্রিত করুন৷
স্বয়ংক্রিয় বার্তা অটোটেক্সট পাঠ্যের সেই স্থানগুলিকে বোঝায় যা প্রসঙ্গের উপর নির্ভর করে গতিশীলভাবে পরিবর্তিত হয়। স্লাইডে, এটি পাঠ্যের ভিতরে বর্তমান স্লাইড সংখ্যা উপস্থাপন করতে ব্যবহৃত হয়।

পাঠ্য বিষয়বস্তু পরিবর্তন

যখন আপনাকে স্লাইড API ব্যবহার করে পাঠ্য পরিবর্তন করতে হবে, তখন আপনাকে স্পষ্টভাবে সমস্ত উপযুক্ত পাঠ্য উপাদান তৈরি করতে হবে না। পরিবর্তে, আপনি স্লাইড সম্পাদকের মতো পাঠ্যের উপর অপারেট করতে পারেন: পাঠ্য সন্নিবেশ করে, ব্যাপ্তি মুছে ফেলার মাধ্যমে এবং ব্যাপ্তিতে শৈলী আপডেট করে। এই ক্রিয়াকলাপগুলি আপনার পরিবর্তনগুলিকে প্রতিফলিত করার জন্য প্রয়োজনীয় ParagraphMarker এবং TextRun উপাদানগুলি অন্তর্নিহিতভাবে তৈরি করে৷

পাঠ্য সন্নিবেশ করা হচ্ছে

আপনি batchUpdate- এ একটি কলে InsertTextRequest অনুরোধ ব্যবহার করে একটি সূচকে পাঠ্য সন্নিবেশ করতে পারেন। এই পদ্ধতির insertionIndex ক্ষেত্রটি নির্দিষ্ট করে কোথায় পাঠ্য সন্নিবেশ করতে হবে; আপনি টেক্সট উপাদানের ভিতরে শুরু এবং শেষ সূচক ক্ষেত্র ব্যবহার করে এই সূচকটি গণনা করতে পারেন।

পাঠ্য সন্নিবেশের কিছু পার্শ্বপ্রতিক্রিয়া রয়েছে যা স্লাইড সম্পাদকের আচরণকে প্রতিফলিত করে:

  • একটি নতুন লাইনের অক্ষর সন্নিবেশ করানো পরোক্ষভাবে একটি নতুন অনুচ্ছেদ তৈরি করে, একটি ParagraphMarker পাঠ্য উপাদান তৈরি করে যা নতুন লাইনের সূচীতে শুরু হয় এবং নিম্নলিখিত নতুন লাইনে শেষ হয়। অনুচ্ছেদ শৈলী — বুলেট এবং তালিকার বিবরণ সহ — বর্তমান অনুচ্ছেদ থেকে নতুন অনুচ্ছেদে অনুলিপি করা হয়েছে।
  • সন্নিবেশিত অক্ষরগুলির শৈলী স্বয়ংক্রিয়ভাবে নির্ধারিত হয়, সাধারণত একই টেক্সট শৈলী যা সন্নিবেশ সূচকে বিদ্যমান ছিল। ফলস্বরূপ, পাঠ্যটি সাধারণত সেই সূচকে বিদ্যমান TextRun এ ঢোকানো হয়। আপনি একটি UpdateTextStyle অনুরোধ ব্যবহার করে পরে এই শৈলী আপডেট করতে পারেন।

পাঠ্য মুছে ফেলা হচ্ছে

আপনি batchUpdate- এ একটি কলে DeleteTextRequest বার্তা ব্যবহার করে পাঠ্যের একটি পরিসর মুছে ফেলতে পারেন। পাঠ্য মুছে ফেলার কিছু সূক্ষ্মতা জড়িত:

  • একটি মোছা যা একটি অনুচ্ছেদের সীমানা অতিক্রম করে দুটি অনুচ্ছেদকে একত্রিত করে, পৃথকীকরণ ParagraphMarker পাঠ্য উপাদানটিকে মুছে দেয়।
  • নতুন একত্রিত অনুচ্ছেদটি একটি সম্মিলিত অনুচ্ছেদ শৈলী ব্যবহার করবে, স্লাইড সম্পাদকের সাথে মিলে যাওয়া আচরণ।
  • একটি মুছে ফেলা যার পরিসর একটি টেক্সট রানকে অন্তর্ভুক্ত করে একটি টেক্সট রান থেকে সমস্ত বিষয়বস্তু সরিয়ে দেয় এবং এটি নিজে থেকেই টেক্সট চালানো মুছে দেয়।
  • একটি অপসারণ যার পরিসর একটি AutoText উপাদানকে অন্তর্ভুক্ত করে AutoText উপাদানটিকে মুছে দেয়৷

পাঠ্য শৈলী আপডেট করা হচ্ছে

একটি স্লাইডে পাঠ্যের রেন্ডার করা উপস্থিতি পাঠ্য শৈলী বৈশিষ্ট্য দ্বারা নির্ধারিত হয়:

  • অনুচ্ছেদ শৈলী যেমন ইন্ডেনশন, সারিবদ্ধকরণ এবং বুলেট গ্লিফ, অনুচ্ছেদ চিহ্নিতকারীর বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত করা হয়।
  • বোল্ড, তির্যক এবং আন্ডারলাইনের মতো অক্ষর শৈলীগুলি পৃথক পাঠ্য রানের বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত করা হয়।

অক্ষর শৈলী আপডেট করা হচ্ছে

আপনি batchUpdate- এ একটি কলে UpdateTextStyleRequest বার্তা ব্যবহার করে অক্ষরের শৈলী আপডেট করতে পারেন।

অন্যান্য পাঠ্য ক্রিয়াকলাপের মতো, অক্ষর শৈলীটি পাঠ্যের একটি পরিসরে প্রয়োগ করা হয় এবং প্রয়োজন অনুসারে নতুন TextRun অবজেক্ট তৈরি করে।

কিছু অক্ষর শৈলী সেট করা স্লাইড সম্পাদকের আচরণের সাথে মেলে অন্য সম্পর্কিত শৈলীগুলিকে অন্তর্নিহিতভাবে আপডেট করে। উদাহরণস্বরূপ, একটি লিঙ্ক যুক্ত করা স্বয়ংক্রিয়ভাবে পাঠ্যের অগ্রভাগের রঙ এবং আন্ডারলাইন বৈশিষ্ট্যগুলিকে পরিবর্তন করে। আরো বিস্তারিত জানার জন্য TextStyle রেফারেন্স ডকুমেন্টেশন দেখুন।

অনুচ্ছেদ শৈলী আপডেট করা হচ্ছে

আপনি batchUpdate- এ একটি কলে UpdateParagraphStyleRequest বার্তা ব্যবহার করে অনুচ্ছেদ শৈলী আপডেট করতে পারেন।

স্লাইডস এপিআই একটি CreateParagraphBulletsRequest সমর্থন করে যা বুলেটযুক্ত এবং সংখ্যাযুক্ত তালিকা তৈরির জন্য স্লাইড সম্পাদকের বুলেট প্রিসেটগুলির কার্যকারিতা প্রতিফলিত করে। একইভাবে, DeleteParagraphBulletsRequest অনুচ্ছেদে বিদ্যমান বুলেটগুলি সরিয়ে দেয়।

উত্তরাধিকার সূত্রে প্রাপ্ত শৈলী

কিছু আকার, যা স্থানধারক হিসাবে পরিচিত, অন্যান্য, মূল আকৃতি থেকে পাঠ্য শৈলীর উত্তরাধিকারী হতে পারে: সাধারণভাবে আকৃতির উত্তরাধিকার সম্পর্কে আরও জানতে স্থানধারক দেখুন।

এই বিভাগটি স্লাইডে প্রদর্শিত চূড়ান্ত, রেন্ডার করা পাঠ্য শৈলী তৈরি করতে শৈলীর উত্তরাধিকার কীভাবে কাজ করে তার উপর ফোকাস করে।

স্থানধারক মধ্যে শৈলী উপস্থাপনা

পিতামাতা এবং শিশু আকারের মধ্যে উত্তরাধিকার কীভাবে কাজ করে তা স্থানধারকদের বিভাগে বর্ণনা করে। টেক্সট শৈলীর উত্তরাধিকার উত্তরাধিকার মডেলের মধ্যে অতিরিক্ত বৈশিষ্ট্য দ্বারা পরিচালিত হয়:

  • ParagraphMaker পাঠ্য উপাদানের বৈশিষ্ট্য অনুচ্ছেদ বিন্যাস সংজ্ঞায়িত করে।
  • TextRun টেক্সট উপাদানের বৈশিষ্ট্য অক্ষর বিন্যাস সংজ্ঞায়িত করে।
  • প্যারেন্ট প্লেসহোল্ডারদের বিষয়বস্তুতে এই ধরনের আটটি ParagraphMarker/TextRun জোড়া রয়েছে (তালিকা নেস্টিংয়ের আটটি স্তরকে সমর্থন করার জন্য)।
  • একটি শিশু স্থানধারক তার পিতামাতার পাঠ্য বিষয়বস্তুতে এই পাঠ্য উপাদানগুলি থেকে তার ডিফল্ট পাঠ্য বৈশিষ্ট্যগুলিকে উত্তরাধিকার সূত্রে পায়।

নিম্নলিখিত চিত্রটি এই সম্পর্কগুলিকে কল্পনা করার একটি উপায় দেখায়:

টেক্সট বৈশিষ্ট্য উত্তরাধিকারসূত্রে শিশু আকৃতির চিত্র

প্যারেন্ট আকৃতিতে প্রথম ParagraphMarker/TextRun উত্তরাধিকারসূত্রে পাওয়া বেশিরভাগ পাঠ্য শৈলী নির্ধারণ করে; অবশিষ্ট সাত জোড়ার স্টাইলিং শুধুমাত্র অনুচ্ছেদগুলিকে আরও গভীরভাবে নেস্টেড বুলেট স্তরে প্রভাবিত করে:

মূল পাঠ্য উপাদান জোড়া চাইল্ড ফরম্যাটিং যা এটি নিয়ন্ত্রণ করে
প্রথম ParagraphMarker
প্রথম TextRun
লেভেল 0 (সবচেয়ে বাইরের) তালিকা অনুচ্ছেদের পাঠ্য শৈলী এবং সমস্ত নন-লিস্ট অনুচ্ছেদ।
দ্বিতীয় ParagraphMarker
দ্বিতীয় TextRun
অবশিষ্ট (নেস্টেড) তালিকা স্তরের পাঠ্য শৈলী 1-7
তৃতীয় ParagraphMarker
তৃতীয় TextRun
চতুর্থ ParagraphMarker
চতুর্থ TextRun
পঞ্চম ParagraphMarker
পঞ্চম TextRun
ষষ্ঠ ParagraphMarker
ষষ্ঠ TextRun
সপ্তম ParagraphMarker
সপ্তম TextRun
অষ্টম ParagraphMarker
অষ্টম TextRun

পাঠ্য উপাদানগুলির এই জোড়াগুলি অ্যাক্সেস করতে, নীচের স্নিপেটে দেখানো হিসাবে textElements ক্ষেত্রের মধ্যে তাদের স্পষ্ট সূচকটি ব্যবহার করুন, যা লেভেল 0 এবং নন-লিস্ট অনুচ্ছেদের জন্য ডিফল্ট (উত্তরাধিকারযোগ্য) স্টাইলিং সেট করে দেখায়:

"text": {
  "textElements": [  {
     "startIndex": 0,
     "endIndex": 1,
     "paragraphMarker": {
       "style": {  "alignment": "START",  ...  },
       "bullet": {  "nestingLevel": 0,  ...  }
     }
   },{
     "startIndex": 0,
     "endIndex": 1,
     "textRun": {
       "content": "\n",
       "style": {  "foregroundColor": {  "opaqueColor": {  "themeColor": "DARK1"  }  },  }
     }
   },{
     ...
   } ]
 }

মনে রাখবেন যে একটি প্যারেন্ট আকৃতির TextRun এর content ক্ষেত্র সর্বদা একটি একক নতুন লাইন অক্ষর নিয়ে গঠিত।

উত্তরাধিকার সূত্রে প্রাপ্ত শৈলী ওভাররাইড করা যেতে পারে

একটি শিশু আকৃতি এর বিষয়বস্তুতে ParagraphMarker এবং TextRun উপাদানগুলিতে স্টাইলিং বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারে। এই স্থানীয়ভাবে নির্দিষ্ট বৈশিষ্ট্যগুলি তাদের স্থানীয় সুযোগের মধ্যে উত্তরাধিকারসূত্রে প্রাপ্ত যে কোনও বৈশিষ্ট্যকে ওভাররাইড করবে৷ যে উপাদানগুলি কোনও শৈলী নির্দিষ্ট করে না সেগুলি পিতামাতার কাছ থেকে উত্তরাধিকারসূত্রে পাওয়া সংশ্লিষ্ট শৈলী ব্যবহার করবে৷

একটি শিশু আকৃতি থেকে একটি সুস্পষ্ট শৈলী বৈশিষ্ট্য সরানো, যাতে এটি আর সেট করা না হয়, এটি পিতামাতার কাছ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হবে৷

উদাহরণ

উপরের চিত্রে দেখানো উত্তরাধিকারের প্রেক্ষিতে, ধরুন ParentPlaceholder আকারে নিম্নলিখিত পাঠ্য সামগ্রী রয়েছে:

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {"alignment": "START", ...},
        "bullet": {"nestingLevel": 0, ...}
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, }
        ...
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {"alignment": "END", ...},
        "bullet": {"nestingLevel": 1, ...}
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "LIGHT1"} }, ...}
      }
    },
   ...
  ]
}

এবং ধরুন ChildPlaceholder আকারে নিম্নলিখিত পাঠ্য সামগ্রী রয়েছে:

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {},
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "This is my first paragraph\n",
        "style": {},
      }
      ...
    },
    {  "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {},
        "bullet": {
          "nestingLevel": 1,
          "listId": "someListId",
          "glyph": "●"
        }
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "This paragraph is in a list\n",
        "style": {},
        ...
      }
    }
  ]
}

এর ফলে নিম্নলিখিত অনুচ্ছেদে বর্ণিত ফলাফল পাওয়া যায়।

একটি সাধারণ অনুচ্ছেদের জন্য শৈলী উত্তরাধিকার

চাইল্ড আকৃতির প্রথম অনুচ্ছেদ, যার মধ্যে "এটি আমার প্রথম অনুচ্ছেদ" লেখা রয়েছে, এটি একটি সরল অনুচ্ছেদ (তালিকায় নয়)। এর পাঠ্য বিষয়বস্তুতে কোনো উপাদান কোনো শৈলী বৈশিষ্ট্য নির্দিষ্ট করে না, তাই এটি তার সমস্ত চরিত্র এবং অনুচ্ছেদ শৈলী তার পিতামাতার কাছ থেকে উত্তরাধিকারসূত্রে পায়। এটি নিম্নলিখিত রেন্ডারিং ঘটায়:

  • পাঠ্য: "এটি আমার প্রথম অনুচ্ছেদ" রেন্ডার করা পাঠ্য। টেক্সট নিজেই উত্তরাধিকারসূত্রে প্রাপ্ত হয় না।
  • প্রান্তিককরণ: পাঠ্যটি START প্রান্তিককরণের সাথে রেন্ডার করা হয়েছে, পিতামাতার প্রথম ParagraphMarker থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।
  • ফোরগ্রাউন্ড কালার: টেক্সটটি DARK1 ফোরগ্রাউন্ড কালার দিয়ে রেন্ডার করা হয়েছে, যা পিতামাতার প্রথম TextRun থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।

একটি তালিকা অনুচ্ছেদের জন্য শৈলী উত্তরাধিকার

পরবর্তী অনুচ্ছেদ, যার মধ্যে "এই অনুচ্ছেদটি একটি তালিকায় রয়েছে" পাঠ্য রয়েছে, এটি নেস্টিং স্তর 1-এ একটি বুলেটযুক্ত তালিকায় রয়েছে, যেহেতু এর সংশ্লিষ্ট ParagraphMarker bullet ক্ষেত্রটি এই স্তরে সেট করা আছে। ফলস্বরূপ, এটি পিতামাতার মধ্যে নেস্টিং স্তর 1 থেকে পাঠ্য এবং অনুচ্ছেদ শৈলী উত্তরাধিকারসূত্রে পায়। এর ফলে নিম্নলিখিত রেন্ডারিং হয়:

  • পাঠ্য: "এই অনুচ্ছেদটি একটি তালিকায় রয়েছে" রেন্ডার করা পাঠ্য। টেক্সট নিজেই উত্তরাধিকারসূত্রে প্রাপ্ত হয় না।
  • প্রান্তিককরণ: পাঠ্যটি "END" প্রান্তিককরণের সাথে রেন্ডার করা হয়েছে, পিতামাতার দ্বিতীয় ParagraphMarker থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।
  • ফোরগ্রাউন্ড কালার: টেক্সটটি LIGHT1 টেক্সট ফোরগ্রাউন্ড কালার দিয়ে রেন্ডার করা হয়েছে, যা পিতামাতার দ্বিতীয় TextRun থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।

টেক্সট এবং অনুচ্ছেদ শৈলী আপডেট এবং উত্তরাধিকারসূত্রে পারস্পরিক মিথস্ক্রিয়া

টেক্সট শৈলী যেগুলি একটি শিশু আকারে সেট করা হয় না সেগুলি তার পিতামাতার কাছ থেকে মান উত্তরাধিকারসূত্রে পাবে৷ শিশুর মধ্যে সেট করা পাঠ্য শৈলী কিছু স্থানীয় সুযোগে অভিভাবক মানগুলিকে "ওভাররাইড" করবে।

আপনি একটি চাইল্ড শেপের টেক্সট স্টাইল আনসেট করার জন্য একটি UpdateTextStyleRequest ব্যবহার করতে পারেন, যাতে এটির আর কোনো স্থানীয় ওভাররাইড না থাকে এবং এইভাবে মূল আকৃতি থেকে এর সিল্টগুলি উত্তরাধিকার সূত্রে পায়। অতিরিক্তভাবে, পিতামাতার কাছ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত মানের সাথে মিলের জন্য সন্তানের পাঠ্য শৈলী আপডেট করা অস্পষ্টভাবে স্টাইলটিকে আনসেট করে যাতে এটি উত্তরাধিকারসূত্রে পাওয়া মান ব্যবহার করে।

এটি একটি আপডেটের পরপরই পাঠ্যের ভিজ্যুয়াল চেহারাকে প্রভাবিত করে না, তবে আপনি যদি পরে একটি প্যারেন্ট প্লেসহোল্ডারে একটি অনুচ্ছেদ বা পাঠ্য শৈলী আপডেট করেন তবে এটি গুরুত্বপূর্ণ। এই উত্তরাধিকার আচরণ স্লাইড সম্পাদকের আচরণের সাথে মেলে, তাই আপনি API এর বিরুদ্ধে কাজ করার আগে শৈলী পরিবর্তনের ফলাফল নিয়ে পরীক্ষা করতে পারেন।

উদাহরণ

ChildPlaceholder এবং ParentPlaceholder এর পূর্ববর্তী উদাহরণের সংজ্ঞাগুলি বিবেচনা করুন।

এখন ধরুন আপনি এই UpdateTextStyleRequest জমা দিন:

{ "updateTextStyle": {
    "objectId": "ChildPlaceholder",
    "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, },
    "textRange": { "type": "ALL" },
    "fields": "foregroundColor"
  }
}

এই অনুরোধটি চাইল্ডপ্লেসহোল্ডারের সমস্ত টেক্সটে একটি DARK1 foregroundColor সেট করার চেষ্টা করে, একটি ফিল্ড মাস্ক ব্যবহার করে নির্দিষ্ট করে যে উপাদানটির শুধুমাত্র অগ্রভাগের রঙ পরিবর্তন করা উচিত। এই অনুরোধের নিম্নলিখিত ফলাফল আছে:

  • প্রথম অনুচ্ছেদ: নতুন foregroundColor উত্তরাধিকারসূত্রে পাওয়া foregroundColor এর সাথে মেলে, তাই এই স্টাইলটি অপরিবর্তিত এবং এখনও উত্তরাধিকারসূত্রে পাওয়া যায়।
  • দ্বিতীয় অনুচ্ছেদ: নতুন foregroundColor উত্তরাধিকারসূত্রে পাওয়া foregroundColor সাথে মেলে না, তাই দ্বিতীয় অনুচ্ছেদের অগ্রভাগের রঙটি DARK1 এ আপডেট করা হয়েছে।

চাইল্ডপ্লেসহোল্ডারের পাঠ্য সামগ্রী এখন হল:

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {},
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "This is my first paragraph\n",
        "style": {},
      }
      ...
    },
    { "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {},
        "bullet": {"nestingLevel": 1, "listId": "someListId", "glyph": "●" }
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "This paragraph is in a list\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, },
        ...
      }
    }
  ]
}

বুলেট গ্লিফ টেক্সট শৈলী

সাধারণ পাঠ্যের মতো, বুলেট গ্লিফের একটি পাঠ্য শৈলী রয়েছে যা নিয়ন্ত্রণ করে কিভাবে গ্লিফ রেন্ডার করা হয়। এই পাঠ্য শৈলী সরাসরি স্লাইড API ব্যবহার করে পরিবর্তন করা যাবে না. যাইহোক, যদি আপনি একটি সম্পূর্ণ অনুচ্ছেদ আপডেট করতে একটি UpdateTextStyleRequest ব্যবহার করেন যাতে একটি বুলেট অন্তর্ভুক্ত থাকে, তাহলে স্লাইডস এপিআই বুলেট গ্লিফের পাঠ্য শৈলীকে আপডেট করে।

বুলেট গ্লিফ টেক্সট শৈলী স্বাভাবিক টেক্সট শৈলী থেকে একটি সামান্য ভিন্ন উত্তরাধিকার অনুক্রম অনুসরণ করে।

  1. একটি নির্দিষ্ট নেস্টিং স্তরে একটি বুলেট প্রথমে বুলেটের List অবজেক্টের ভিতরে NestingLevel.bullet_style ক্ষেত্রের সেট করা TextStyle থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
  2. এটি পরবর্তীতে এর মূল স্থানধারকের List সংশ্লিষ্ট NestingLevel.bullet_style থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয়।
  3. অবশেষে এটি অবশিষ্ট প্যারেন্ট প্লেসহোল্ডার অবজেক্ট থেকে উত্তরাধিকারী হতে চায়।