Where the function is defined in library?

I have SSD1306 oled display, its use the library "Adafruit_SSD1306.cpp"

https://github.com/adafruit/Adafruit_SSD1306/blob/master/Adafruit_SSD1306.cpp

here display object is created like this, "Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);"

uisng "display" object "display.println("Hello, world!");" print the string into old display.

my doubt is, where the println function is defined? i am not seen in Adafruit_SSD1306 library.

Thanks.

class Adafruit_GFX : public Print {

my doubt is, where the println function is defined?

It is inherited from the Print library

Print library

Could you please tell me ,

whats happens inside the print function? when "display.println("Hello, world!");" execute, where the string will be store?

ssd1306 old use frame buffer method , a dynamic buffer is created in "Adafruit_SSD1306" library. How " Hello, world!" string is assigned into buffer?

due to limited knowledge i couldn't understand the concept..

when "display.println("Hello, world!");" execute, where the string will be store?

Displays commonly use an area of memory that holds the data that is currently displayed on the screen. This area is known as a buffer. The data is read from the buffer and shown on the screen. Sometimes two buffers are used, one holding the current screen contents and a second being updated with data to be displayed on the screen next. When the time comes the buffers exchange roles and the updated display is shown on the screen. This allows portions of the screen to be updated without causing it to flicker but, of course, requires twice as much memory compared with a single buffer

When you execute a print command using constant text such as "Hello, world" the text is copied into the current or next buffer from its location within the program depending on whether single or double buffering is being used. When you execute a print command to print a variable then the data from the variable is copied into the buffer. In both cases you effectively have two copies of it or the constant text but the copy in the buffer is overwritten if/when the screen changes

The string is stored where the compiler put it.
The library picks it apart letter by letter, and renders it to the display pixel by pixel.
I doubt the library even takes a copy of the string; there is no need to.

sir,

coping the string to buffer then pass the buffer to display..thats clear.

but how can font size depends when copying string to buffer?

how can font size depends when copying string to buffer?

AWOL expanded on my simple description. When the data to be displayed is copied to the buffer the library code actually turns the data into individual pixels so it can cope with different font sizes, colours, etc