Изменение размера шрифта выводимого текста в консоле, как побороть?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Artefact
Сообщения: 1
Зарегистрирован: 26 фев 2008, 00:19

26 фев 2008, 00:23

OS Ubuntu 7.10, пока изучаю с++, пишу консольные приложения. Проблема в следующем. Допустим программа запрашивает открыть ли файл. Если пользователь соглашается, то программа выводит текст, который содержится в файле. Но мне нужно, чтобы выводимый текст имел меньший размер шрифта, например у меня в консоле размер шрифта 12, а в выводимом файле нужен 5. Как можно побороть? Код программы:

Код: Выделить всё

#include <iostream>
#include <fstream>
using namespace std;
int main ()
{   int n;
    ifstream file_in("Psevdo.txt", ios::in);
    cout<<"Хотите увидеть текст?";
    cout<<"1-да, 2-нет"<<endl;
    cin>>n;
    switch(n)
    {
     case 1: cout<<file_in.rdbuf()<<endl; break;
     case 2: cout<<"Программа завершена"<<endl; break;
     default: break;
    }
    return 0;
}
Что нужно добавить в код чтобы все было красиво и аккуратно?
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

26 фев 2008, 10:10

Интуиция подсказывает, что это невозможно. Консольное окно в моем понимании - это аналог DOS-экрана, причем в текстовом режиме. А в DOS-овских текстовых режимах размер букв для всего экрана единый.
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

26 фев 2008, 10:46

В MS-DOS можно было менять размер букв даже в текстовом режиме, но за счёт изменения самого видеорежима. MS-DOS позволяла использовать несколько видеорежимов для консольных приложений: 80х25(стандартный), 40х25 и 80х50. В режиме 80х50 размер букв был вдвое меньше, чем в стандартном 80х25 видеорежиме. Переключение видеорежимов происходит с помощью прерывания BIOS 10H.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

26 фев 2008, 12:11

WinMain,
автору, как я понял, нужно, чтобы ОДНОВРЕМЕННО на консоли было несколько шрифтов разного размера. Часть текста - шрифтом одного размера, часть - другого.
Аватара пользователя
WinMain
Сообщения: 913
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

26 фев 2008, 12:21

Ну тогда это только в графическом режиме можно сделать. Хотя, как я помню, были умельцы, которые могли в консольном режиме перепрограммировать знакогенератор, чтобы на одно знакоместо умещалось сразу два символа. Т.е. на одном стандартном знакоместе 8х16 пикселей отображалось два символа 8х8 пикселей.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

26 фев 2008, 15:35

WinMain писал(а):Хотя, как я помню, были умельцы, которые могли в консольном режиме перепрограммировать знакогенератор, чтобы на одно знакоместо умещалось сразу два символа. Т.е. на одном стандартном знакоместе 8х16 пикселей отображалось два символа 8х8 пикселей.
Ну, если ркчь о EGA/VGA, там особых "супер-умений" и не нужно было. Были стандартные ф-ии (наверное, 10h-прерывания... точно уж не вспомню) загрузки изображений символов. Собственно, многие (если не все) русификаторы так поступали. Учитывая, что в компах кириллический шрифт часто вообще отсутствовал.
Другое дело, как потом этим пользоваться. Ведь это только визуально было бы два символа, а логически-то все равно один. Т.е. какой ТЕКСТ надо "написать" на экране, чтобы ВИЗУАЛЬНО было бы то, что нужно :)
expelled
Сообщения: 7
Зарегистрирован: 07 фев 2008, 16:13
Откуда: St-Petersburg
Контактная информация:

06 мар 2008, 19:03

&quot писал(а):OS Ubuntu 7.10, пока изучаю с++, пишу консольные приложения. Проблема в следующем. Допустим программа запрашивает открыть ли файл. Если пользователь соглашается, то программа выводит текст, который содержится в файле. Но мне нужно, чтобы выводимый текст имел меньший размер шрифта, например у меня в консоле размер шрифта 12, а в выводимом файле нужен 5. Как можно побороть?
По идеи это не реально... лично я не знаю функций которые бы смогли сменить выводимый шрифт. При этом я не вижу смысла выполнять подобные задачи...
Ну а вообще можно написать доп функцию, которая изменяла бы конфиг фаел терминала и системным вызовом пере запускала бы его (при этом окно терминала будет закрываться (как обойти я не представляю))... ну а потом вывод того что вам нада (: и перед выходом из программы снова смена размера шрифта через конфиг.
Но это решение само по себе не будет красивым... Если найдете другое поделитесь, будте так любезны ;)

P.S.: при этом скорее всего конфиг по шрифтам и их размерностям отдельный для всего и чтобы изменения внесенные в него применились придется перезапускать X
Daemon
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

07 мар 2008, 10:07

Да, в принципе, для консольного вывода можно изменить цвет букв.
Ответить