टेक्स्ट स्ट्रक्चर और स्टाइल

Slides के एपीआई में, टेक्स्ट को शेप या टेबल सेल में शामिल किया जा सकता है. टेक्स्ट में बदलाव करने और उसे स्टाइल देने से पहले, आपको इसकी स्ट्रक्चर और स्टाइल को समझना होगा.

इस पेज पर बताया गया है कि Slides API में टेक्स्ट को कैसे दिखाया जाता है.

टेक्स्ट एलिमेंट के क्रम

आकार या टेबल सेल में मौजूद टेक्स्ट, TextElement से जुड़ी संरचना के क्रम से बना होता है. यह क्रम, टेक्स्ट की संरचना को उस क्रम में दिखाता है जिस क्रम में यह शुरू से आखिर तक दिखता है.

उदाहरण के लिए, इस स्लाइड के कॉन्टेंट को देखें—ये सारी जानकारी एक ही टेक्स्ट बॉक्स में दी गई है:

किसी सिंपल स्लाइड का स्क्रीनशॉट

ऊपर दी गई स्लाइड में एक टेक्स्ट बॉक्स है, जिसके text फ़ील्ड में टेक्स्ट एलिमेंट का क्रम होता है, जैसा कि इस डायग्राम में दिखाया गया है:

टेक्स्ट एलिमेंट का क्रम दिखाने वाला डायग्राम

साफ़ तौर पर कहें, तो टेक्स्ट का यह क्रम Slides API में इस तरह दिखाया जाता है:

"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": {} }
}]

टेक्स्ट एलिमेंट का कॉन्टेंट

हर टेक्स्ट एलिमेंट में ज़ीरो पर आधारित स्टार्ट इंडेक्स और एंड इंडेक्स होते हैं. ये एलिमेंट, पेज एलिमेंट के पूरे टेक्स्ट में एलिमेंट की जगह की जानकारी देते हैं. साथ ही, इनमें से किसी एक तरह के टेक्स्ट ऑब्जेक्ट के बारे में भी बताते हैं:

टेक्स्ट का टाइप ब्यौरा
ParagraphMarker यह टेक्स्ट एलिमेंट, नया पैराग्राफ़ शुरू होने के बारे में बताता है. टेक्स्ट एलिमेंट का शुरुआती और आखिरी इंडेक्स, पैराग्राफ़ का पूरा स्पैन दिखाता है. इसमें पैराग्राफ़ के आखिर में मौजूद नई लाइन वर्ण भी शामिल होता है. एक पैराग्राफ़ कभी भी दूसरे पैराग्राफ़ को ओवरलैप नहीं करता. पैराग्राफ़ के आखिर में नई लाइन होती है. इसलिए, किसी आकृति या टेबल सेल के टेक्स्ट कॉन्टेंट के आखिर में, हमेशा एक नई लाइन होती है.

पैराग्राफ़, बुलेट वाली या नंबर वाली सूचियों से जुड़ा हो सकता है. अगर ऐसा है, तो ParagraphMarker.bullet फ़ील्ड के कॉन्टेंट में एक सूची आईडी शामिल होता है. यह आईडी, TextElement क्रम के साथ TextContent के अंदर मौजूद सूची के एलिमेंट का रेफ़रंस देता है. एक ही लॉजिकल सूची में मौजूद पैराग्राफ़, एक ही सूची आईडी को रेफ़र करेंगे.
TextRun यह टेक्स्ट एलिमेंट, टेक्स्ट की स्ट्रिंग को दिखाता है. इन सभी का टेक्स्ट स्टाइल एक जैसा होता है. टेक्स्ट कभी भी पैराग्राफ़ की सीमाओं को पार नहीं करता: भले ही, एक पैराग्राफ़ के खत्म होने वाले टेक्स्ट का स्टाइल अगले पैराग्राफ़ से शुरू होने वाले टेक्स्ट की स्टाइल जैसा ही हो, लेकिन कॉन्टेंट को न्यूलाइन वर्ण के बाद बांटा जाता है, ताकि अलग टेक्स्ट रन हो सके.

अगर आपको किसी पेज एलिमेंट के अंदर पूरे टेक्स्ट स्ट्रिंग को प्रोसेस करना है, तो सभी टेक्स्ट एलिमेंट को दोहराएं और सभी टेक्स्ट एलिमेंट में दिखने वाली स्ट्रिंग को जोड़ें.
AutoText अपने-आप टेक्स्ट उन जगहों को कहा जाता है जो कॉन्टेक्स्ट के हिसाब से डाइनैमिक तौर पर बदलती हैं. Slides में, इसका इस्तेमाल टेक्स्ट में मौजूदा स्लाइड नंबर को दिखाने के लिए किया जाता है.

टेक्स्ट के कॉन्टेंट में बदलाव करना

Slides API का इस्तेमाल करके टेक्स्ट में बदलाव करने के लिए, आपको सभी सही टेक्स्ट एलिमेंट साफ़ तौर पर बनाने की ज़रूरत नहीं होती. इसके बजाय, आप Slides एडिटर की तरह ही टेक्स्ट पर काम कर सकते हैं: इसमें टेक्स्ट शामिल करना, रेंज मिटाना, और रेंज में स्टाइल अपडेट करना. ये ऑपरेशन इंप्लिसिट तरीके से ParagraphMarker और TextRun एलिमेंट बनाते हैं, ताकि आपके बदलावों को दिखाया जा सके.

लेख शामिल किया जा रहा है

batchUpdate को किए जाने वाले कॉल में InsertTextRequest अनुरोध का इस्तेमाल करके, इंडेक्स में टेक्स्ट शामिल किया जा सकता है. इस तरीके का insertionIndex फ़ील्ड यह बताता है कि टेक्स्ट कहां डालना है. टेक्स्ट एलिमेंट के अंदर स्टार्ट और एंड इंडेक्स फ़ील्ड का इस्तेमाल करके, इस इंडेक्स का पता लगाया जा सकता है.

टेक्स्ट डालने के कुछ खराब असर भी होते हैं, जो स्लाइड एडिटर के काम करने का तरीका दिखाते हैं:

  • नई लाइन वर्ण डालने से, साफ़ तौर पर एक नया पैराग्राफ़ बन जाता है. इससे ParagraphMarker टेक्स्ट एलिमेंट बन जाता है, जो नई लाइन के इंडेक्स से शुरू होता है और नीचे दी गई नई लाइन पर खत्म होता है. पैराग्राफ़ की शैली—बुलेट और सूची के विवरण सहित — मौजूदा पैराग्राफ़ से नए पैराग्राफ़ में कॉपी की जाती है.
  • आम तौर पर, डाले गए वर्णों की स्टाइल अपने-आप तय होती है. इसमें वही टेक्स्ट स्टाइल होती है जो इंसर्शन इंडेक्स में मौजूद थी. इस वजह से, टेक्स्ट को आम तौर पर उस इंडेक्स में मौजूदा TextRun में डाला जाता है. आपके पास बाद में इस स्टाइल को अपडेट करने का विकल्प होता है. इसके लिए, UpdateTextStyle अनुरोध का इस्तेमाल करें.

टेक्स्ट मिटाया जा रहा है

batchUpdate को कॉल करने के लिए, DeleteTextRequest मैसेज का इस्तेमाल करके कई तरह के टेक्स्ट मिटाए जा सकते हैं. टेक्स्ट मिटाने की कुछ बारीकियां शामिल होती हैं:

  • किसी पैराग्राफ़ की सीमा को मिटाने पर, दोनों पैराग्राफ़ मर्ज हो जाते हैं. साथ ही, अलग-अलग ParagraphMarker टेक्स्ट एलिमेंट भी मिट जाते हैं.
  • मर्ज किया गया नया पैराग्राफ़, स्लाइड एडिटर में एक जैसे व्यवहार वाले पैराग्राफ़ की स्टाइल का इस्तेमाल करेगा.
  • ऐसे डेटा को मिटाने पर, जिसमें टेक्स्ट की रेंज शामिल होती है, टेक्स्ट चलाने से सभी कॉन्टेंट हट जाता है. साथ ही, टेक्स्ट चलने की सुविधा से वह कॉन्टेंट भी मिट जाता है.
  • ऐसे डेटा को मिटाने से, AutoText एलिमेंट मिट जाता है जिसकी रेंज में AutoText एलिमेंट शामिल होता है.

टेक्स्ट की स्टाइल अपडेट की जा रही है

स्लाइड में टेक्स्ट कैसा दिखेगा, यह टेक्स्ट स्टाइल प्रॉपर्टी से तय होता है:

  • इंडेंटियन, अलाइनमेंट, और बुलेट ग्लिफ़ जैसी पैराग्राफ़ स्टाइल, पैराग्राफ़ मार्कर पर प्रॉपर्टी के हिसाब से तय की जाती हैं.
  • बोल्ड, इटैलिक, और अंडरलाइन जैसी कैरेक्टर स्टाइल, हर टेक्स्ट के चलने पर प्रॉपर्टी के हिसाब से तय होती हैं.

किरदार की शैली अपडेट की जा रही है

batchUpdate को कॉल करने के लिए, UpdateTextStyleRequest मैसेज का इस्तेमाल करके वर्ण स्टाइल अपडेट किए जा सकते हैं.

अन्य टेक्स्ट ऑपरेशन की तरह ही, कैरेक्टर स्टाइल, टेक्स्ट की रेंज पर लागू की जाती है और ज़रूरत के मुताबिक, इंप्लिसिट तरीके से नया TextRun ऑब्जेक्ट बनाती है.

कुछ वर्ण शैलियां सेट करने से स्लाइड संपादक में व्यवहार से मेल खाने के लिए अन्य संबंधित शैलियां स्पष्ट रूप से अपडेट हो जाती हैं. उदाहरण के लिए, लिंक जोड़ने से टेक्स्ट के फ़ोरग्राउंड का रंग और अंडरलाइन प्रॉपर्टी अपने-आप बदल जाती हैं. ज़्यादा जानकारी के लिए, TextStyle रेफ़रंस दस्तावेज़ देखें.

पैराग्राफ़ शैली अपडेट की जा रही है

batchUpdate को कॉल करने के दौरान, UpdateParagraphStyleRequest मैसेज का इस्तेमाल करके पैराग्राफ़ की स्टाइल अपडेट की जा सकती हैं.

Slides API, CreateParagraphBulletsRequest के साथ काम करता है, जो बुलेट और नंबर वाली सूचियां बनाने के लिए, Slides एडिटर में बुलेट प्रीसेट की सुविधा की मिररिंग करता है. इसी तरह, DeleteParagraphBulletsRequest पैराग्राफ़ पर मौजूद किसी भी बुलेट को हटाता है.

इनहेरिट की गई स्टाइल

कुछ आकार जिन्हें placeholders कहा जाता है, वे अन्य यानी पैरंट शेप से टेक्स्ट स्टाइल को इनहेरिट कर सकते हैं: सामान्य रूप से शेप इनहेरिटेंस के बारे में ज़्यादा जानने के लिए, placeholders देखें.

यह सेक्शन इस पर फ़ोकस करता है कि स्टाइल इनहेरिटेंस, स्लाइड में दिखाई गई आखिरी और रेंडर की गई टेक्स्ट स्टाइल बनाने के लिए कैसे काम करती है.

प्लेसहोल्डर में स्टाइल दिखाना

placeholders के सेक्शन में बताया गया है कि पैरंट और चाइल्ड शेप के बीच इनहेरिटेंस कैसे काम करता है. टेक्स्ट स्टाइल की इनहेरिटेंस, इनहेरिटेंस मॉडल में मौजूद अन्य सुविधाओं से मैनेज की जाती है:

  • 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 का इस्तेमाल किया जा सकता है. ऐसा करने से, इसमें लोकल बदलाव नहीं होता. इसलिए, यह पैरंट आकार के स्टाइल को इनहेरिट करता है. साथ ही, पैरंट से इनहेरिट की गई वैल्यू से मैच करने के लिए बच्चे के टेक्स्ट स्टाइल को अपडेट करने से, स्टाइल को साफ़ तौर पर अनसेट कर दिया जाता है, ताकि इनहेरिट की गई वैल्यू का इस्तेमाल किया जा सके.

इससे, अपडेट के तुरंत बाद टेक्स्ट दिखने पर कोई असर नहीं पड़ता. हालांकि, पैरंट प्लेसहोल्डर में किसी पैराग्राफ़ या टेक्स्ट स्टाइल को बाद में अपडेट करने से फ़र्क़ पड़ता है. यह इनहेरिटेंस, Slides एडिटर के व्यवहार से मैच करता है. इसलिए, एपीआई के साथ काम करने से पहले, स्टाइल में किए गए बदलावों के नतीजों के साथ प्रयोग किया जा सकता है.

उदाहरण

ChildPlaceholder और ParentPlaceholder के लिए, पिछले उदाहरण में दी गई परिभाषाएं देखें.

अब मान लें कि आपने यह UpdateTextStyleRequest सबमिट किया है:

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

यह अनुरोध, फ़ील्ड मास्क का इस्तेमाल करके चाइल्ड प्लेसहोल्डर के सभी टेक्स्ट पर DARK1फ़ोरग्राउंड कलर सेट करने की कोशिश करता है. इससे यह तय किया जाता है कि एलिमेंट का सिर्फ़ फ़ोरग्राउंड रंग बदलना है. इस अनुरोध के ये नतीजे हैं:

  • पहला पैराग्राफ़: नया 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"} }, },
        ...
      }
    }
  ]
}

बुलेट ग्लिफ़ टेक्स्ट स्टाइल

सामान्य टेक्स्ट की तरह, बुलेट ग्लिफ़ की टेक्स्ट स्टाइल होती है जो ग्लिफ़ को रेंडर करने के तरीके को कंट्रोल करती है. इन टेक्स्ट स्टाइल को सीधे Slides API का इस्तेमाल करके बदला नहीं जा सकता. हालांकि, अगर बुलेट वाले पूरे पैराग्राफ़ को अपडेट करने के लिए, UpdateTextStyleRequest का इस्तेमाल किया जाता है, तो Slides API, मैच करने के लिए बुलेट ग्लिफ़ के टेक्स्ट की स्टाइल को अपडेट कर देता है.

बुलेट ग्लिफ़ टेक्स्ट स्टाइल, सामान्य टेक्स्ट स्टाइल से थोड़ा अलग इनहेरिटेंस हैरारकी के हिसाब से होते हैं.

  1. किसी नेस्टिंग लेवल पर मौजूद किसी बुलेट को पहले, बुलेट के List ऑब्जेक्ट के अंदर NestingLevel.bullet_style फ़ील्ड में मौजूद TextStyle सेट से इनहेरिट किया जाता है.
  2. इसके बाद, यह अपने पैरंट प्लेसहोल्डर के List में शामिल NestingLevel.bullet_style से इनहेरिट करता है.
  3. आखिर में, यह बाकी बचे पैरंट प्लेसहोल्डर ऑब्जेक्ट से इनहेरिट करता है.